二叉検索ツリーでの挿入操作-leetcode 701-python


ツリー(BST)のルートノードとツリーに挿入する値を指定し、ツリーに値を挿入します.挿入後のツリーのルートノードを返します.元の二叉検索ツリーに新しい値が存在しないことを保証します.
なお、ツリーが挿入後も二叉探索ツリーとして保持されている限り、有効な挿入方法は複数存在する可能性がある.任意の有効な結果を返すことができます.
たとえば、
       :

        4
       / \
      2   7
     / \
    1   3

      : 5

この二叉検索ツリーに戻ることができます.
         4
       /   \
      2     7
     / \   /
    1   3 5

あるいはこの木も有効です.
         5
       /   \
      2     7
     / \   
    1   3
         \
          4

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

class Solution(object):
    def insertIntoBST(self, root, val):
        """
        :type root: TreeNode
        :type val: int
        :rtype: TreeNode
        """
        if root is None:
            root = TreeNode(val)
        cur = root
        while(cur):
            if(cur.val>val):
                if cur.left is None:
                    cur.left = TreeNode(val)
                    return root
                else:
                    cur = cur.left
            else:
                if cur.right is None:
                    cur.right = TreeNode(val)
                    return root
                else:
                    cur = cur.right