Skip to content

Latest commit

 

History

History
76 lines (61 loc) · 1.43 KB

0701._Insert_into_a_Binary_Search_Tree.md

File metadata and controls

76 lines (61 loc) · 1.43 KB

701. Insert into a Binary Search Tree

难度: Medium

刷题内容

原题连接

内容描述

给定二叉搜索树(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;
}