Skip to content

701. Insert into a Binary Search Tree

难度: Medium

刷题内容

原题连接

  • https://leetcode-cn.com/problems/insert-into-a-binary-search-tree/

内容描述

``` 给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 保证原始二叉搜索树中不存在新值。

注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回任意有效的结果。

例如,

给定二叉搜索树:

    4
   / \
  2   7
 / \
1   3

和 插入的值: 5 你可以返回这个二叉搜索树:

     4
   /   \
  2     7
 / \   /
1   3 5

或者这个树也是有效的:

     5
   /   \
  2     7
 / \   
1   3
     \
      4

```

解题方案

思路 1

二分查找,记录父节点和大小关系
TreeNode* insertIntoBST(TreeNode* root, int val) {
    TreeNode* pre;
    TreeNode* head = root;
    int side = 0;
    while(root){
        pre = root;
        if(root->val>val){
            root = root->left;
            side = 1;
        }
        else if(root->val<val){
            side = 0;
            root = root->right;
        }
    }
    TreeNode* node = new TreeNode(val);
    if(side==1)
        pre->left = node;
    else
        pre->right = node;
    return head;
}


回到顶部