# 2.2 二叉搜索树

二叉搜索树也是二叉树,拥有二叉树的特性。

  1. 每个节点中的值必须 大于(或等于)存储在其左侧子树中的任何值
  2. 每个节点中的值必须 小于(或等于)存储在其右子树中的任何值

左小右大

分而治之的思想

xcooo

1 2 3 4 5 6 7

注意:对于任何一个二叉搜索树,采用中序遍历的方式,一定可以得到一个递增的序列。

# 2.2.1 二叉搜索树的查找 (opens new window)

var searchBST = function(root, val) {
    if (val < root.val) {
        return root.left ? searchBST(root.left, val) : null;
    }
    if (val > root.val) {
        return root.right ? searchBST(root.right, val) : null;
    }
    if (root.val === val) {
        return root;
    }
};
1
2
3
4
5
6
7
8
9
10
11

# 2.2.2 二叉搜索树的插入 (opens new window)

var insertIntoBST = function(tree, val) {
    searchBST(tree, val);
    return tree;
    function searchBST(root, val) {        
        if (val < root.val) {
            if (root.left) {
                searchBST(root.left, val)
            } else {
                root.left = new TreeNode(val);
            }
        }
        if (val > root.val) {
            if (root.right) {
                searchBST(root.right, val)
            } else {
                root.right = new TreeNode(val);
            }
        }
        if (root.val === val) {
            root.left = new TreeNode(val);
        }
    };
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
上次更新: 2021/2/24 上午10:55:31