码迷,mamicode.com
首页 > 其他好文 > 详细

538. Convert BST to Greater Tree

时间:2019-05-29 10:29:49      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:div   mic   分析   更新   解答   方式   变量   src   ret   

一、题目

  1、审题

  技术图片

  

  2、分析

    给出一棵二叉搜索树。将所有节点值加上比他大的所有节点值。

 

二、解答

  思路:

    采用类似中序(左-->根-->右)遍历的方式。实际采用 (右--> 根 --> 左)。遍历时,统计所有遍历的节点之和。

 

  方法一、

    采用一个 Stack 进行二叉树遍历。同时更新节点值。

    public TreeNode convertBST(TreeNode root) {
        
        Stack<TreeNode> stack = new Stack<>();
        int sum = 0;
        TreeNode node = root;
        while(!stack.isEmpty() || node != null) {
            while(node != null) {
                stack.add(node);
                node = node.right;
            }
            
            node = stack.pop();
            node.val += sum;
            sum = node.val;
            node = node.left;
        }
        return root;
    }

 

  方法二、

    ① 采用一个全局变量,统计遍历的节点值之和。

    ② 采用递归方式进行二叉树遍历。

  

    int sum = 0;
    public TreeNode convertBST(TreeNode root) {
        if(root == null)
            return null;
        convertBST(root.right);
        root.val += sum;
        sum = root.val;
        convertBST(root.left);
        return root;
    }

 

    

538. Convert BST to Greater Tree

标签:div   mic   分析   更新   解答   方式   变量   src   ret   

原文地址:https://www.cnblogs.com/skillking/p/10942132.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!