zoukankan      html  css  js  c++  java
  • leetcode156- Binary Tree Upside Down- medium

    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  

    递归。主要操作指针。

    1.左边也做一次。

    2.现在的三个结点指针变一变。记得要把root的指针清null,不然会出现双向指针。

    3.把左边指针传上来的root当root传回去,这样才能把最底下弄到的新root给传到最上面来。

    实现:

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
        public TreeNode upsideDownBinaryTree(TreeNode root) {
            
            if (root == null || root.left == null && root.right == null) {
                return root;
            }
            TreeNode newRoot = upsideDownBinaryTree(root.left);
            root.left.left = root.right;
            root.left.right = root;
            root.left = root.right = null;
            return newRoot;
        }
    }
  • 相关阅读:
    Python分布式+云计算
    Python实例31[批量对目录下文件重命名]
    python类库26[sqlite]
    Python-Django的windows环境
    DBA常用SQL总结梳理
    查看db_buffer_cache相关参数
    构建直方图
    单实例数据库DataGuard主库与备库切换
    Linux下查找并关闭进程
    如何创建ASM磁盘?
  • 原文地址:https://www.cnblogs.com/jasminemzy/p/7837131.html
Copyright © 2011-2022 走看看