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