LintCode(85)在二叉查詢樹中插入節點

2022-03-25 09:42:18 字數 1886 閱讀 8647

在二叉查詢樹中插入節點

給定一棵二叉查詢樹和乙個新的樹節點,將節點插入到樹中。

你需要保證該樹仍然是一棵二叉查詢樹。

樣例給出如下一棵二叉查詢樹,在插入節點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定義為 節點的左子樹中的值要嚴格小於該節點的值。節點的右子樹中的值要嚴格大於該節點的值。左右子樹也必須是二叉查詢樹。乙個節點的樹也是二叉查詢樹。解題 二叉查詢樹中序遍歷是公升序,可以中序遍歷後,根據是否公升序判斷是否是二叉查詢樹,...