題目
給定乙個二叉搜尋樹,同時給定最小邊界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...