zoukankan      html  css  js  c++  java
  • [LeetCode]114. 二叉树展开为链表

    题目

    给定一个二叉树,原地将它展开为链表。

    题解

    • 原地指结果可以覆盖输入,且额外空间限制在常数级别。
    • 对于根节点,把右子树连到左子树的最右节点,再把左子树连到根的右子树(即覆盖右子树),当前节点的左孩子赋null;然后把根节点的右子树做当前节点,继续这么处理。
    • 画图试试即可理解原理,大概就是把一个个节点的左孩子清成null。

    代码

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
        public void flatten(TreeNode root) {
            TreeNode pRoot=root;
            while(pRoot!=null){
                TreeNode lNode=pRoot.left;
                if(lNode!=null){
                    while(lNode.right!=null){
                        lNode=lNode.right;
                    }
                    lNode.right=pRoot.right;
                    pRoot.right=pRoot.left;
                    pRoot.left=null;//
                }
                pRoot=pRoot.right;
            }
        }
    }
    
  • 相关阅读:
    P2437 蜜蜂路线题解
    P1044 栈题解
    P1002 过河卒题解
    P1433 吃奶酪题解
    组合数公式
    P1036 选数题解
    十进制转二进制方法整理
    golang学习笔记 ---工作区与GOPATH
    golang学习笔记---闭包
    golang学习笔记---类型
  • 原文地址:https://www.cnblogs.com/coding-gaga/p/11221910.html
Copyright © 2011-2022 走看看