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;
            }
        }
    }
    
  • 相关阅读:
    Wireshark抓包分析TCP 3次握手、4次挥手过程
    Wireshark基本介绍和学习TCP三次握手
    关于TCP窗口大小
    stat
    Disk
    内存对齐
    Openssl asn1parse命令
    checkinstall
    Nginx
    Linux top
  • 原文地址:https://www.cnblogs.com/coding-gaga/p/11221910.html
Copyright © 2011-2022 走看看