538. 把二叉搜尋樹轉換為累加樹 題解
class Solution { // 先將右子樹轉換為累加樹;並記錄右子樹的累加和rightSum; // 然後處理根節點,根節點的值 = 根節點值 + rightSum; // 然後轉化左子樹 public TreeNode convertBST(TreeNode root) { convert(root, 0); return root; } public int convert(TreeNode root, int rightSum){ if(null == root){ return rightSum; } rightSum = convert(root.right, rightSum); root.val = root.val + rightSum; rightSum = root.val; rightSum = convert(root.left, rightSum); return rightSum; } }
class Solution { // !!! 不太很優雅,但卻讓程式碼更容易理解!!! private int rightSum = 0; // 先將右子樹轉換為累加樹;並記錄右子樹的累加和rightSum; // 然後處理根節點,根節點的值 = 根節點值 + rightSum; // 然後轉化左子樹 public TreeNode convertBST(TreeNode root) { if(null == root){ return root; } convertBST(root.right); root.val = root.val + rightSum; rightSum = root.val; convertBST(root.left); return root; } }
相關推薦
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
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),使得每個節點的值是原來的節點值加上所有大於它的節點值之和。例如:輸入: 二叉搜索樹
[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
LeetCode刷題——把二叉搜尋樹轉換為累加樹
大家好,繼續刷題,今天刷到一道很巧妙的題,來看題目要求: 思路:因為是二叉搜尋樹,所以先遞迴右子樹,然後把中間節點累加起來,然後遞迴左子樹就可以了。其實想明白這個就很簡單了,主要還是要利用搜索樹的特性。 /** * Definition for a binary t
LeetCode 把二叉搜尋樹轉換為累加樹
第538題 給定一個二叉搜尋樹(Binary Search Tree),把它轉換成為累加樹(Greater Tree),使得每個節點的值是原來的節點值加上所有大於它的節點值之和。 例如: 輸入: 二叉搜尋樹: 5 / \ 2
把排序陣列轉換為高度最小的二叉搜尋樹
題目描述:給一個排序陣列(從小到大),將其轉換為一棵高度最小的二叉搜尋樹。 樣例:給出陣列 [1,2,3,4,5,6,7], 返回 首先,先來看一下二叉搜尋樹(也稱為二叉排序樹)的定義:它或者是一棵
lintcode——把排序陣列轉換為高度最小的二叉搜尋樹
/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->
Leetcode:108.將有序陣列轉換為二叉搜尋樹&&Leetcode:109.將有序連結串列轉換成二叉搜尋樹
Leetcode:108.將有序陣列轉換為二叉搜尋樹 將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 示例: 給定有序陣列: [-10,-3,0,5,9], 一個可
leetcode-將有序陣列轉換為二叉搜尋樹(JavaScript)
將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 示例: 給定有序陣列: [-10,-3,0,5,9], 一個可能的答案是:[0,-3,9,-10,null,5],它可以
leetcode 108. 將有序陣列轉換為二叉搜尋樹(java)
將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 示例: 給定有序陣列: [-10,-3,0,5,9], 一個可能的答案是:[0,-3,9,-10,null,5],它可以
108. 將有序陣列轉換為二叉搜尋樹
將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 示例: 給定有序陣列: [-10,-3,0,5,9], 一個可能的答案是:[0,-3,9,-10,null,5]
leetcode-108. 將有序陣列轉換為二叉搜尋樹
題目 將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 示例: 給定有序陣列: [-10,-3,0,5,9], 一個可能的答案是:[0,-3,9,
leetcode 108. 將有序陣列轉換為二叉搜尋樹
始終使用陣列中間的數為父節點,兩邊的子陣列構成兩個子樹。 TreeNode* sortedArrayToBST(vector<int> &nums) { int size_nums = nums.size(); if (size_
[LeetCode javaScript] 108. 將有序陣列轉換為二叉搜尋樹
將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 示例: 給定有序陣列: [-10,-3,0,5,9], 一個可能的答案是:[0,-3,9,-10,null
LeetCode 108. 將有序陣列轉換為二叉搜尋樹 Python
將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 示例: 給定有序陣列: [-10,-3,0,5,9], 一個可能的答案是:[0,-3,9,-10,null,5]
LeetCode 108.Convert Sorted Array to Binary Search Tree (將有序陣列轉換為二叉搜尋樹)
題目描述: 將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 示例: 給定有序陣列: [-10,-3,0,5,9], 一個可能的答案是:[0,-3,9,-10,
108. 將有序陣列轉換為二叉搜尋樹(簡單,陣列,二叉樹)
將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 示例: 給定有序陣列: [-10,-3,0,5,9], 一個可能的答案是:[0,-3,9,-10,null,5],它可以