您好,登錄后才能下訂單哦!
小編給大家分享一下LeetCode如何實現二叉搜索樹的范圍和,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
給定二叉搜索樹的根結點 root
,返回 L
和 R
(含)之間的所有結點的值的和。
二叉搜索樹保證具有唯一的值。
示例 1:
輸入:root = [10,5,15,3,7,null,18], L = 7, R = 15輸出:32
示例 2:
輸入:root = [10,5,15,3,7,13,18,1,null,6], L = 6, R = 10輸出:23
提示:
樹中的結點數量最多為 10000
個。 最終的答案保證小于 2^31
。
標簽:深度優先遍歷
題意:這個題字面含義很難理解,本意就是求出所有 X >= L
且 X <= R
的值的和
遞歸終止條件:
當前節點為null時返回0
當前節點 X < L
時則返回右子樹之和
當前節點 X > R
時則返回左子樹之和
當前節點 X >= L
且 X <= R
時則返回:當前節點值 + 左子樹之和 + 右子樹之和
注意點:通過判斷X的大小能夠避免遍歷全部樹的節點,比如下方的動圖中,3這個值就沒有必要遍歷
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public int rangeSumBST(TreeNode root, int L, int R) { if (root == null) { return 0; } if (root.val < L) { return rangeSumBST(root.right, L, R); } if (root.val > R) { return rangeSumBST(root.left, L, R); } return root.val + rangeSumBST(root.left, L, R) + rangeSumBST(root.right, L, R); }}
看完了這篇文章,相信你對“LeetCode如何實現二叉搜索樹的范圍和”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。