zoukankan      html  css  js  c++  java
  • [leetcode] 小心成环

    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  
    

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

    /**
     * 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 result = helper(root);
            return result;
        }
        private TreeNode helper(TreeNode r) {
            TreeNode left = r.left;
            TreeNode right = r.right;
            if (left == null && right == null) {
                return r;
            }
            TreeNode result = helper(left);
            left.right = r;
            left.left = right;
            //modify root to leaf node
            r.left = null;
            r.right = null;
            return result;
        }
    }

    防止成环的代码是这段:

    //modify root to leaf node
            r.left = null;
            r.right = null;

    让根节点变成叶子节点。

    currentNode的那道 sort list也要注意。不然merge的时候, 前半串会找不到终点的

  • 相关阅读:
    病毒
    最短母串
    单词
    Censoring
    玄武密码
    Keywords Search
    聚会
    异象石
    暗的连锁
    pat 1048. Find Coins (25)
  • 原文地址:https://www.cnblogs.com/Gryffin/p/6235491.html
Copyright © 2011-2022 走看看