leetcode 538. Convert BST to Greater Tree(反向中序遍历)

来源:互联网 发布:apache 访问权限 编辑:程序博客网 时间:2024/06/06 02:00

问题描述:

  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.


这里写图片描述

思路:

  由于二叉搜索数的中序遍历的结果是从小到大排列的结点值,利用这个特性,采用反向中序遍历,从大向小检查数字,每个结点的值都加上已经遍历过的结点值的和,即可。

代码:

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */class Solution {    int num = 0;    public TreeNode convertBST(TreeNode root) {        middle(root);        return root;    }    public void middle(TreeNode root){        if(root == null) return;        if(root.right != null)            middle(root.right);        root.val += num;        num = root.val;        if(root.left != null)            middle(root.left);    }}
原创粉丝点击