701 二叉搜尋樹中的插入操作

2021-10-09 22:11:16 字數 1312 閱讀 5511

題目描述:

給定二叉搜尋樹(bst)的根節點和要插入樹中的值,將值插入二叉搜尋樹。 返回插入後二叉搜尋樹的根節點。 輸入資料保證,新值和原始二叉搜尋樹中的任意節點值都不同。

注意,可能存在多種有效的插入方式,只要樹在插入後仍保持為二叉搜尋樹即可。 你可以返回任意有效的結果。

例如,給定二叉搜尋樹:

4

/ \2 7

/ \1 3

和 插入的值: 5

你可以返回這個二叉搜尋樹:

4

/ \

2 7

/ \ /

1 3 5

或者這個樹也是有效的:

5

/ \

2 7

/ \

1 3

\4

給定的樹上的節點數介於 0 和 10^4 之間

每個節點都有乙個唯一整數值,取值範圍從 0 到 10^8

-10^8 <= val <= 10^8

新值和原始二叉搜尋樹中的任意節點值都不同

方法1:

主要思路:

(1)將新的值作為葉子結點插入;

(2)則找出作為葉子結點的位置時,可以通過每次判斷當前值應該是在當前結點的左子樹或右子樹上,向下遞迴,同時儲存當前結點作為前一節點;

/**

* definition for a binary tree node.

* struct treenode

* treenode(int x) : val(x), left(nullptr), right(nullptr) {}

* treenode(int x, treenode *left, treenode *right) : val(x), left(left), right(right) {}

* };

*/class

solution

treenode* new_root=root;

treenode* pre=

nullptr

;//儲存前一節點

while

(root)

else

}//確定是插入到左右結點的那個

if(pre-

>val>val)

else

//返回

return new_root;}}

;

701 二叉搜尋樹中的插入操作

給定二叉搜尋樹 bst 的根節點和要插入樹中的值,將值插入二叉搜尋樹。返回插入後二叉搜尋樹的根節點。保證原始二叉搜尋樹中不存在新值。注意,可能存在多種有效的插入方式,只要樹在插入後仍保持為二叉搜尋樹即可。你可以返回任意有效的結果。例如,給定二叉搜尋樹 4 2 7 1 3 和 插入的值 5 你可以返回...

701 二叉搜尋樹中的插入操作

二叉搜尋樹本身有序,因此無需遍歷整棵樹,插入位置根據當前節點和val的大小關係可以判斷出接下來往哪走 通過遞迴函式返回值完成新加入節點的父子關係賦值操作,下一層將加入節點返回,本層用root left或者root right將其接住 treenode insertintobst treenode r...

701 二叉搜尋樹中的插入操作

二叉搜尋樹中的插入操作 給定二叉搜尋樹 bst 的根節點和要插入樹中的值,將值插入二叉搜尋樹。返回插入後二叉搜尋樹的根節點。輸入資料 保證 新值和原始二叉搜尋樹中的任意節點值都不同。注意,可能存在多種有效的插入方式,只要樹在插入後仍保持為二叉搜尋樹即可。你可以返回 任意有效的結果 示例 1 輸入 r...