• ✡ leetcode 156. Binary Tree Upside Down 旋转树 --------- java


    156. Binary Tree Upside Down

     
     My Submissions
     
    • Total Accepted: 18225
    • Total Submissions: 43407
    • Difficulty: Medium
    • Contributors: Admin

    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.


    OJ's Binary Tree Serialization:

    The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below.

    Here's an example:

       1
      / 
     2   3
        /
       4
        
         5
    
    The above binary tree is serialized as "{1,2,3,#,#,4,#,#,5}".
     
    给定一棵树,这棵树的右节点有两种选择:1、空节点 2、叶子结点(左节点一定存在)
     
    然后旋转该树(结构对称)且左节点变换为:1、空节点 2、叶子结点(右节点一定存在)
     
    那么就可以用递归和非递归两种形式实现。
     
    我选择了非递归的实现方法。
     
    自顶向下:给定[1,2,3],变换为[2,3,1]依次从上向下变换即可。
     
    /**
     * 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 node = root;
            TreeNode nodeLeft = root.left;
            TreeNode nodeRight = root.right;
            while (nodeLeft != null){
                TreeNode nodeChange = node;
                TreeNode nodeLeftChange = nodeLeft;
                TreeNode nodeRightChange = nodeRight;
                node = nodeLeft;
                nodeLeft = node.left;
                nodeRight = node.right;
                nodeLeftChange.left = nodeRightChange;
                nodeLeftChange.right = nodeChange;
            }
            root.left = null;
            root.right = null;
            return node;
        }
    }
     
     
  • 相关阅读:
    myeclipse中代码不显示SVN版本号
    java HttpURLConnection 登录网站 完整代码
    新浪微博自动(模拟)登陆详解及实现
    java模拟Cookies登陆
    paper 53 :深度学习(转载)
    paper 52 :windows7环境下theano安装
    paper 51:图像复原
    paper 50 :人脸识别简史与近期进展
    paper 49:论文退稿?审稿人帮你总结了22个能避免的常见问题
    paper 48: Latex中如何制作参考文献
  • 原文地址:https://www.cnblogs.com/xiaoba1203/p/6109066.html
Copyright © 2020-2023  润新知