654. 最大二叉树
给定一个不重复的整数数组 nums
。 最大二叉树 可以用下面的算法从 nums
递归地构建:
- 创建一个根节点,其值为
nums
中的最大值。 - 递归地在最大值 左边 的 子数组前缀上 构建左子树。
- 递归地在最大值 右边 的 子数组后缀上 构建右子树。
返回 nums
构建的 最大二叉树 。
示例 1:
输入:nums = [3,2,1,6,0,5] 输出:[6,3,5,null,2,0,null,null,1]
700. 二叉搜索树中的搜索
给定二叉搜索树(BST)的根节点 root
和一个整数值 val
。
你需要在 BST 中找到节点值等于 val
的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null
。
示例 1:
输入:root = [4,2,7,1,3], val = 2 输出:[2,1,3]
class Solution {
public:
TreeNode* searchBST(TreeNode* root, int val) {
while(root){
if(root->val == val) return root;
else if(root->val > val) root = root->left;
else if(root->val < val) root = root->right;
}
return root;
}
};
递归写法:
class Solution {
public:
TreeNode* searchBST(TreeNode* root, int val) {
if(!root || root->val == val) return root;
TreeNode* res = NULL;
if(root->val > val) res = searchBST(root->left,val);
if(root->val < val) res = searchBST(root->right,val);
return res;
}
};