617. 合并二叉樹
public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
if (root1 == null) {
return root2;
}
if (root2 == null) {
return root1;
}
TreeNode treeNode = new TreeNode(root1.val + root2.val);
treeNode.left = mergeTrees(root1.left, root2.left);
treeNode.right = mergeTrees(root1.right, root2.right);
return treeNode;
}
700. 二叉搜索樹中的搜索
public TreeNode searchBST(TreeNode root, int val) {
// 二叉搜索樹脸狸,根節(jié)點比左子樹所有節(jié)點的值都大懦砂,比右子樹所有根節(jié)點的值都小
if (root == null) {
return null;
}
if (root.val > val) {
return searchBST(root.left, val);
} else if (root.val < val){
return searchBST(root.right, val);
} else {
return root;
}
}
98. 驗證二叉搜索樹
private List<Integer> list = new ArrayList<>();
public boolean isValidBST(TreeNode root) {
// 二叉搜索樹窿给,中序遍歷的結(jié)果是一個有序序列
getPreList(root);
int preValue = list.get(0);
for (int i = 1; i < list.size(); i++) {
if (list.get(i) <= preValue) {
return false;
} else {
preValue = list.get(i);
}
}
return true;
}
private void getPreList(TreeNode root) {
if (root == null) {
return;
}
getPreList(root.left);
list.add(root.val);
getPreList(root.right);
}
注意一點:二叉搜索樹拳缠,中序遍歷的結(jié)果是一個有序序列覆获。只要知道這一點马澈,問題就可以輕松解答了