Binary Tree Upside Down

来源:互联网 发布:sql2000备份50g数据库 编辑:程序博客网 时间:2024/05/21 06:43

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  

confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.

It is easy to find that the original left child will become the root and his left child is the original root's right child, his right child is the original root. so we can simply use a iterative to implement this.


/** * 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)            return null;                TreeNode p = root, parent = null, parentRight = null;                while (p != null) {            TreeNode left = p.left;            p.left = parentRight;            parentRight = p.right;            p.right = parent;            parent = p;            p = left;        }        return parent;    }}


 

0 0
原创粉丝点击