在二叉查詢樹中插入節點
給定一棵二叉查詢樹和乙個新的樹節點,將節點插入到樹中。
你需要保證該樹仍然是一棵二叉查詢樹。
樣例給出如下一棵二叉查詢樹,在插入節點6之後這棵二叉查詢樹可以是這樣的:
2 2
/ \ / \
1 4 --> 1 4
/ / \
3 3 6遞迴和非遞迴兩種方法實現。
"""definition of treenode:
class treenode:
def __init__(self, val):
self.val = val
self.left, self.right = none, 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 insertnode1(self, root, node):
# write your code here
if root is none:
root = node
return root
if node.val < root.val:
root.left = self.insertnode1(root.left, node)
else:
root.right = self.insertnode1(root.left, node)
return root
def insertnode(self, root, node):
# write your code here
if root is none:
root = node
return root
t = root
while t is not none:
if node.val < t.val:
if t.left is none:
t.left = node
return root
else:
t = t.left
continue
else:
if t.right is none:
t.right = node
return root
else:
t = t.right
continue
return root
github -- python**
/*** definition of treenode:
* class treenode
* }*/class solution //if
if(node->val < root->val)
else//else
}elseelse//else
}//else
return root;
}//非遞迴
treenode* insertnode(treenode* root, treenode* node) //if
treenode *t = root;
while(t != null)
else//else
}//if
elseelse//else
}//else
}//while
return root;}};
github -- c++**
85 在二叉查詢樹中插入節點
給定一棵二叉查詢樹和乙個新的樹節點,將節點插入到樹中。你需要保證該樹仍然是一棵二叉查詢樹。樣例 1 輸入 tree node 1 輸出 樣例解釋 在空樹中插入乙個點,應該插入為根節點。樣例 2 輸入 tree node 6 輸出 樣例解釋 如下 2 2 1 4 1 4 3 3 6能否不使用遞迴?保證...
lintcode 在二叉查詢樹中插入節點
1問題描述 給定一棵二叉查詢樹和乙個新的樹節點,將節點插入到樹中。你需要保證該樹仍然是一棵二叉查詢樹。樣例 給出如下一棵二叉查詢樹,在插入節點6之後這棵二叉查詢樹可以是這樣的 2 2 1 4 1 4 3 3 6 2解題思路 利用二叉查詢樹的特性,根據插入節點的值和根節點的值進行比較,若比根節點的值小...
lintcode 驗證二叉查詢樹
題目 給定乙個二叉樹,判斷它是否是合法的二叉查詢樹 bst 一棵bst定義為 節點的左子樹中的值要嚴格小於該節點的值。節點的右子樹中的值要嚴格大於該節點的值。左右子樹也必須是二叉查詢樹。乙個節點的樹也是二叉查詢樹。解題 二叉查詢樹中序遍歷是公升序,可以中序遍歷後,根據是否公升序判斷是否是二叉查詢樹,...