zoukankan      html  css  js  c++  java
  • 13.Convert BST to Greater Tree(将树转为更大树)

    Level:

      Easy

    题目描述:

    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     13
    
    Output: The root of a Greater Tree like this:
                 18
                /   
              20     13
    

    思路分析:

      中序遍历是先访问左子树然后根节点,然后右子树,这道题我们可以修改一下中序遍历的顺序,先访问右子树,然后根节点,然后左子树,在访问的过程中我们更新节点的值,最后得到题目的结果。

    代码:

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
        int sum=0;
        public TreeNode convertBST(TreeNode root) {
            if(root==null)
                return null;
            if(root!=null){
                convertBST(root.right);//先访问右子树
                root.val=root.val+sum; //更新节点的值
                sum=root.val;
                convertBST(root.left);
            }
            return root;
        }
    }
    
  • 相关阅读:
    java项目部署到LIINUX
    JAVA项目部署(1)
    JAVA项目服务器部署
    JAVA项目部署到云服务器
    JAVA项目打包
    java项目部署
    NHibernate NHibernate使用时误区
    访问其他电脑的c盘
    unit vs单元测试
    java 获取url及url参数解析
  • 原文地址:https://www.cnblogs.com/yjxyy/p/10712386.html
Copyright © 2011-2022 走看看