leetcode538 把二叉搜索树转换成累加树(java)

问题描述:

给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。

package com.onlyqi.upup01.leetcode;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

public class Frog {
    public static void main(String[] args) {
        TreeNode treeNode=new TreeNode(2);
        TreeNode treeNode2=new TreeNode(5);
        TreeNode treeNode3=new TreeNode(13);
        treeNode.setLefTreeNode(treeNode2);
        treeNode.setRightNode(treeNode3);


        preTraverseBTree(treeNode);
        Collections.sort(list);
        System.out.println("=========================="+list);
        preTraverseBTree1(treeNode);
        System.out.println("**********************");
        //preTraverseBTree(treeNode);

    }
    public static List<Integer> list=new ArrayList<>();

    public static void preTraverseBTree(TreeNode rootTreeNode){
        if(rootTreeNode !=null){
            //访问根节点
            list.add(rootTreeNode.getValue());
            System.out.println(rootTreeNode.getValue());
            //访问左节点
            preTraverseBTree(rootTreeNode.getLefTreeNode());
            //访问右节点
            preTraverseBTree(rootTreeNode.getRightNode());

        }
    }
    public static void preTraverseBTree1(TreeNode rootTreeNode){
        if(rootTreeNode !=null){

         Integer a=rootTreeNode.getValue();

//            //访问根节点
            rootTreeNode.setValue(rootTreeNode.getValue()+list.subList(list.indexOf(rootTreeNode.getValue())+1,list.size()).stream().collect(Collectors.summingInt(p->p)));
            System.out.println(rootTreeNode.getValue());

            //访问左节点
            preTraverseBTree1(rootTreeNode.getLefTreeNode());
            //访问右节点
            preTraverseBTree1(rootTreeNode.getRightNode());

        }
    }
}
package upup12;

public class TreeNode {
    private TreeNode LefTreeNode;
    private TreeNode RightNode;
    private Integer value;

    public TreeNode() {
    }

    public TreeNode(TreeNode lefTreeNode, TreeNode rightNode, Integer value) {
        LefTreeNode = lefTreeNode;
        RightNode = rightNode;
        this.value = value;
    }
    public TreeNode( Integer value) {
        this.value = value;
    }

    public TreeNode getLefTreeNode() {
        return LefTreeNode;
    }

    public void setLefTreeNode(TreeNode lefTreeNode) {
        LefTreeNode = lefTreeNode;
    }

    public TreeNode getRightNode() {
        return RightNode;
    }

    public void setRightNode(TreeNode rightNode) {
        RightNode = rightNode;
    }

    public Integer getValue() {
        return value;
    }

    public void setValue(Integer value) {
        this.value = value;
    }
}

运行结果:

 

我要刷100道算法题,第79道 

Supongo que te gusta

Origin blog.csdn.net/guoqi_666/article/details/120140654
Recomendado
Clasificación