天天算法 LeetCode-938-二叉搜索树的范围和
生活随笔
收集整理的這篇文章主要介紹了
天天算法 LeetCode-938-二叉搜索树的范围和
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目鏈接
https://leetcode-cn.com/problems/range-sum-of-bst/
題目描述
給定二叉搜索樹的根結點 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);} } 復制代碼歡迎關注,加入天天算法群,共同成長
轉載于:https://juejin.im/post/5ce20af1f265da1bc23f4937
總結
以上是生活随笔為你收集整理的天天算法 LeetCode-938-二叉搜索树的范围和的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3、从尾到头打印链表----------
- 下一篇: 使用Android studio 运行r