Leetcode 700.二叉搜索树中的搜索
题目要求
示例 1:

输入:root = [4,2,7,1,3], val = 2
输出:[2,1,3]
示例 2:

输入:root = [4,2,7,1,3], val = 5
输出:[]
二叉搜索树性质
创建一个TreeNode进行遍历,如果当前节点val比target小则向右子树遍历,比target大则向左子树遍历
向子结点遍历时需要注意判断子结点是否为null
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
class Solution { public TreeNode searchBST(TreeNode root, int val) { TreeNode cur = root; while (cur != null) { if (cur.val == val) { return cur; }else if (cur.val > val) { if (cur.left != null) { cur = cur.left; }else { return null; } }else if (cur.val < val) { if (cur.right != null) { cur = cur.right; }else { return null; } } } return null; } }
|
递归
1 2 3 4 5 6 7 8 9 10 11 12 13
| class Solution { public TreeNode searchBST(TreeNode root, int val) { if (root == null || root.val == val) { return root; } if (val < root.val) { return searchBST(root.left, val); } else { return searchBST(root.right, val); } } }
|