題目描述:
給定二叉搜尋樹(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...