LeetCode刷題——把二叉搜尋樹轉換為累加樹
大家好,繼續刷題,今天刷到一道很巧妙的題,來看題目要求:
思路:因為是二叉搜尋樹,所以先遞迴右子樹,然後把中間節點累加起來,然後遞迴左子樹就可以了。其實想明白這個就很簡單了,主要還是要利用搜索樹的特性。
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: int sum = 0; TreeNode* convertBST(TreeNode* root) { Sumnum(root); return root; } void Sumnum(TreeNode * root){ if(!root) return; Sumnum(root -> right); root -> val += sum; sum = root -> val; Sumnum(root -> left); } };
我們下期見!
相關推薦
LeetCode刷題——把二叉搜尋樹轉換為累加樹
大家好,繼續刷題,今天刷到一道很巧妙的題,來看題目要求: 思路:因為是二叉搜尋樹,所以先遞迴右子樹,然後把中間節點累加起來,然後遞迴左子樹就可以了。其實想明白這個就很簡單了,主要還是要利用搜索樹的特性。 /** * Definition for a binary t
leetcode 538. 把二叉搜尋樹轉換為累加樹
題目描述:給定一個二叉搜尋樹(Binary Search Tree),把它轉換成為累加樹(Greater Tree),使得每個節點的值是原來的節點值加上所有大於它的節點值之和。例如:輸入: 二叉搜尋樹: 5 / \
LeetCode 538 python 把二叉搜尋樹轉換為累加樹
思路:root.val += root.right root.left += root.val # Definition for a binary tree node. # class TreeNode(object): # def __init__(sel
LeetCode 把二叉搜尋樹轉換為累加樹
第538題 給定一個二叉搜尋樹(Binary Search Tree),把它轉換成為累加樹(Greater Tree),使得每個節點的值是原來的節點值加上所有大於它的節點值之和。 例如: 輸入: 二叉搜尋樹: 5 / \ 2
[Swift]LeetCode538. 把二叉搜尋樹轉換為累加樹 | Convert BST to Greater Tree
Given a Binary Search Tree (BST), convert it to a Greater Tree such that every key of the original BST is changed to the original key plus sum of all keys
538. 把二叉搜尋樹轉換為累加樹 題解
class Solution { // 先將右子樹轉換為累加樹;並記錄右子樹的累加和rightSum; // 然後處理根節點,根節點的值 = 根節點值 + rightSum; // 然後轉化左子樹 public TreeNode conver
538. 把二叉搜尋樹轉換為累加樹
題目分析: 其實只要看到BST就應該立馬想到它的一個重要的性質:其中序遍歷序列是非遞減的。因此本題目的思路就是:先求樹中所有結點值的和sum,然後中序遍歷BST,用sum代替之前的結點值,然後更新sum。 請看下面的程式碼: class
538 Convert BST to Greater Tree 把二叉搜索樹轉換為累加樹
arch rtb efi fin tac problem https 一個 htm 給定一個二叉搜索樹(Binary Search Tree),把它轉換成為累加樹(Greater Tree),使得每個節點的值是原來的節點值加上所有大於它的節點值之和。例如:輸入: 二叉搜索樹
【LeetCode】99. 恢復二叉搜尋樹 結題報告 (C++)
原題地址:https://leetcode-cn.com/problems/recover-binary-search-tree/description/ 題目描述: 二叉搜尋樹中的兩個節點被錯誤地交換。 請在不改變其結構的情況下,恢復這棵樹。 示例 1: 輸入: [1,3,nu
LeetCode演算法題108:將有序陣列轉換為二叉搜尋樹解析
將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 示例: 給定有序陣列: [-10,-3,0,5,9], 一個可能的答案是:[0,-3,9,-10,nul
LeetCode 刷題之二:尋找二叉樹的最大深度
題目為: Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the longest path from the root node d
LeetCode演算法題——完全二叉樹的節點個數
對於這道題首先會想到遞迴判斷節點,不為空就加1,程式碼如下(但是會超時): //會超時 public class Solution { if (root == null) return 0; return CountNodes(root.left) + CountNodes(ro
Leetcode 95. 不同的二叉搜尋樹 II C++
題目描述 思路 首先,本題是另外一個題的升級版,詳細解答。這兩個題都是用到了動態規劃的思想,大的思路是差不多的。不過,這個題要複雜得多。解本題之前一定要先去看一看上一個題的思路。 本題思路,和上一個題一樣,通過迴圈歷遍每一個元素。以這個元素作為根節點,那麼比它小的元素就只能是屬
Leetcode:96.不同的二叉搜尋樹&&Leetcode:95.不同的二叉搜尋樹II
Leetcode:96.不同的二叉搜尋樹 給定一個整數 n,求以 1 ... n 為節點組成的二叉搜尋樹有多少種? 示例: 輸入: 3 輸出: 5 解釋: 給定 n = 3, 一共有 5 種不同結構的二叉搜尋樹: 1 3
LeetCode 96——不同的二叉搜尋樹
1. 題目 2. 解答 以 1 , 2
【LeetCode】 98 驗證二叉搜尋樹
解題思路: 1 二叉搜尋樹和中序遍歷有著密不可分的關係,中序遍歷的結果是所有樹中的節點從左到右的排列。如上圖示例2中的樹 中序遍歷結果應是15346 2 基於1,我們易知,如果中序遍歷的結果是升序排列的,那麼此樹符合二叉搜尋樹的要求,所以可以用中序遍歷並檢測檢測結果的升序情況來做
leetcode 96. 不同的二叉搜尋樹
給定一個整數 n,求以 1 … n 為節點組成的二叉搜尋樹有多少種? 示例: 輸入: 3 輸出: 5 解釋: 給定 n = 3, 一共有 5 種不同結構的二叉搜尋樹: 1
leetCode 96. 不同的二叉搜尋樹(swif)
給定一個整數 n,求以 1 ... n 為節點組成的二叉搜尋樹有多少種? 示例: 輸入: 3 輸出: 5 解釋: 給定 n = 3, 一共有 5 種不同結構的二叉搜尋樹: 1
LeetCode-96.不同的二叉搜尋樹(相關話題:動態規劃)
給定一個整數 n,求以 1 ... n 為節點組成的二叉搜尋樹有多少種? 示例: 輸入: 3 輸出: 5 解釋: 給定 n = 3, 一共有 5 種不同結構的二叉搜尋樹: 1 3 3 2 1 \ /
【LeetCode】98. 驗證二叉搜尋樹
題目描述 給定一個二叉樹,判斷其是否是一個有效的二叉搜尋樹。 假設一個二叉搜尋樹具有如下特徵: 節點的左子樹只包含小於當前節點的數。 節點的右子樹只包含大於當前節點的數。 所有左子樹和右子樹自身必須