主流網(wǎng)站開發(fā)語言企業(yè)網(wǎng)站有哪些功能
538. 把二叉搜索樹轉(zhuǎn)換為累加樹
解題思路
- 改造中序遍歷算法
- 因?yàn)橹行虮闅v的結(jié)果都是有順序的 升序排序,那么如果先遍歷右子樹 在遍歷左子樹 那么結(jié)果就是降序的
- 最后我們?cè)O(shè)置一個(gè)變量 累加所有的中間值 那么得到的結(jié)果就是比當(dāng)前節(jié)點(diǎn)大的所有節(jié)點(diǎn)的值
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/
class Solution {int sum = 0;public TreeNode convertBST(TreeNode root) {// 改造中序遍歷算法traverse(root);return root;}void traverse(TreeNode root){if(root == null){return;}traverse(root.right);sum += root.val;// 每次疊加最大值 比他大的所有節(jié)點(diǎn)// 將BST 轉(zhuǎn)化為累加樹root.val = sum;traverse(root.left);}
}