[Lintcode]85. Insert Node in a Binary Search Tree/[Leetcode]701. Insert into a Binary Search Tree

85. Insert Node in a Binary Search Tree/701. Insert into a Binary Search Tree

  • 本题难度: Easy/Medium
  • Topic: Binary Tree
    Given a binary search tree and a new tree node, insert the node into the tree. You should keep the tree still be a valid binary search tree.

Example
Example 1:
Input: tree = {}, node = 1
Output: 1

Explanation:
Insert node 1 into the empty tree, so there is only one node on the tree.

Example 2:
Input: tree = {2,1,4,3}, node = 6
Output: {2,1,4,3,6}

Explanation: 
Like this:



  2             2
 / \           / \
1   4   -->   1   4
   /             / \ 
  3             3   6
    

Challenge
Can you do it without recursion?

Notice
You can assume there is no duplicate values in this tree + node.

Description

我的代码 for leetcode

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None




class Solution:
    """
    @param: root: The root of the binary search tree.
    @param: node: insert this node into the binary search tree
    @return: The root of the new binary search tree.
    """
    def insertIntoBST(self, root, node):
        # write your code here
        if root is None:
            return TreeNode(node)
        pos = root
        while(pos):
            if pos.val<node:
                if pos.right:
                    pos = pos.right
                else:
                    pos.right = TreeNode(node)
                    return root
            else:
                if pos.left:
                    pos = pos.left
                else:
                    pos.left = TreeNode(node)
                    return root
        

        

思路
不需要平衡

  • 时间复杂度 O(log(n))

猜你喜欢

转载自www.cnblogs.com/siriusli/p/10378320.html