538. Convert BST to Greater Tree | 二叉排序树转换成Greater树

来源:互联网 发布:如何选择网络机顶盒 编辑:程序博客网 时间:2024/06/07 20:22

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 greater than the original key in BST.

Example:

Input: The root of a Binary Search Tree like this:              5            /   \           2     13Output: The root of a Greater Tree like this:             18            /   \          20     13

Subscribe to see which companies asked this question.

思路:采用类似中序遍历的非递归方法,用栈不过是按照“右中左的顺序”来遍历,则当前的值为其前驱的值加上当前节点的值。

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public TreeNode convertBST(TreeNode root) {convertHelper(root);return root;}public void convertHelper(TreeNode root) {Stack<TreeNode> stack = new Stack<>();int pre = 0;while (root != null || !stack.isEmpty()) {while (root != null) {stack.push(root);root = root.right;}root = stack.pop();root.val = root.val + pre;pre = root.val;root = root.left;}}}


0 0
原创粉丝点击