156. Binary Tree Upside Down

Posted Machelsky

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了156. Binary Tree Upside Down相关的知识,希望对你有一定的参考价值。

Given a binary tree where all the right nodes are either leaf nodes with a sibling (a left node that shares the same parent node) or empty, flip it upside down and turn it into a tree where the original right nodes turned into left leaf nodes. Return the new root.

For example:
Given a binary tree {1,2,3,4,5},

    1
   /   2   3
 / 4   5

 

return the root of the binary tree [4,5,2,#,#,3,1].

   4
  /  5   2
    /    3   1  

 

 思路:不是特别理解怎么翻转,用recursive做的。完全按照题目给的例子来。翻转左子树,然后原来的root.left重新分配指向。

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public TreeNode upsideDownBinaryTree(TreeNode root) {
        if(root==null||root.left==null&&root.right==null)
        {
            return root;
        }
        TreeNode check=upsideDownBinaryTree(root.left);
        root.left.left=root.right;
        root.left.right=root;
        root.left=null;
        root.right=null;
        return check;
        
    }
}

 

以上是关于156. Binary Tree Upside Down的主要内容,如果未能解决你的问题,请参考以下文章

156. Binary Tree Upside Down

156. Binary Tree Upside Down

java 156. Binary Tree Upside Down.java

java 156. Binary Tree Upside Down.java

java 156. Binary Tree Upside Down.java

java 156. Binary Tree Upside Down.java