C Leetcode669 修減二叉搜尋樹

2021-09-11 05:51:41 字數 675 閱讀 6269

題目

給定乙個二叉搜尋樹,同時給定最小邊界l 和最大邊界 r。通過修剪二叉搜尋樹,使得所有節點的值在[l, r]中 (r>=l) 。你可能需要改變樹的根節點,所以結果應當返回修剪好的二叉搜尋樹的新的根節點。

示例1:

示例2:

思路

1、遞迴。

實現方法

一、遞迴

/**

* definition for a binary tree node.

* struct treenode

* };

*/class solution

else if(root->val > r)

root->left=trimbst(root->left,l,r);

root->right=trimbst(root->right,l,r);

return root;}};

669 修剪二叉搜尋樹

一開始的思路是憑藉乙個pre指標,pre指標指向當前遍歷節點的父節點,然後當發現該節點不符合要求時,利用二叉搜尋樹的性質,若該節點是小於左邊界的,則它的左子樹也勢必不符合要求,此時將該節點的父節點指向該節點的右子樹。當該節點的值大於r時同理。但是沒成功,自己沒想到這種方法的解決辦法,感覺乙個原因是因...

669 修剪二叉搜尋樹

root為空直接返回null root不為空 要麼左邊出界 root val很小,則root的左子樹值更小就不用看了,但root的右子樹中仍可能找到符合要求的結點,因此將root right看作新的根節點繼續去找,並返回給上一層連線 要麼右邊出界 同理,將root left看作新的根節點繼續去找,並...

669 修剪二叉搜尋樹

一道easy題目,但是直接上手有點難度,麻煩的地方在於會改變二叉樹的結構 注意這是一顆二叉搜尋樹,應該能利用到二叉搜尋樹的性質來遍歷 然後給定區間是 lo w,hi gh low,high low,h igh 一顆二叉搜尋樹的定義是左小右大的,那麼一共還是三種情況,設根節點的值是val 則low v...