leetcode 897.递增顺序查找树

给定一个树,按中序遍历重新排列树,使树中最左边的结点现在是树的根,并且每个结点没有左子结点,只有一个右子结点。

代码如下

class Solution 
{
    public TreeNode increasingBST(TreeNode root)
    {
        inorder(root);
        TreeNode m =new TreeNode(0);
        TreeNode n =m;
        for(int i:list)
        {
           n.right =new TreeNode(i);
           n=n.right;
        }
        return m.right;
    }
    List<Integer> list = new ArrayList<>();
    public void inorder(TreeNode root)
    {
        if(root==null)
            return ;
        inorder(root.left);
        list.add(root.val);
        inorder(root.right);
    } 
}

首先,我们按中序遍历二叉树,将值存储入list中,其次,我们构建二叉树,其左孩子总为空,右孩子则顺序赋予list中的值,最后返回m的右孩子,即为重新构建的树。

你可能感兴趣的:(java,二叉树,java,中序遍历)