zoukankan      html  css  js  c++  java
  • 第114题:二叉树展开为链表

    一. 问题描述

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

    例如,给定二叉树

          1

         / 

       2     5

      /        

    3   4       6

    将其展开为:

     1

       

         2

           

             3

               

                  4

                     

                       5

                         

                            6

    二. 解题思路

    本题思路:采用深度优先遍历+栈的方式进行求解。

    步骤一:将root节点的左右子树置于栈中。

    步骤二:当栈不为空时,从栈中取出顶元素,并将其右子树置于栈然后将其左子树置于栈中,并将取出的栈顶元素放置到root的右子树,并将左子树置为空。

    步骤三:root=root.right,重复步骤二,直到结束。

    三. 执行结果

    执行用时 :2 ms, 在所有 java 提交中击败了25.00%的用户

    内存消耗 :35.9 MB, 在所有 java 提交中击败了81.11%的用户

    四. Java代码

    class Solution {
        public void flatten(TreeNode root) {
          if(root==null) {
                return;
            }
           Stack<TreeNode> stack=new Stack<TreeNode>();
           if(root.right!=null) {
               stack.push(root.right);
           }
           if(root.left!=null) {
               stack.push(root.left);
           }
           while(!stack.isEmpty()) {
               TreeNode temp=stack.pop();
               root.right=temp;
               root.left=null;
               root=root.right;
               if(temp.right!=null) {
                   stack.push(temp.right);
               }
               if(temp.left!=null) {
                   stack.push(temp.left);
               }  
           }
        }
    }
  • 相关阅读:
    react中refs的使用
    在npm发布自己造的轮子
    如何阅读一本书——分析阅读模板
    如何阅读一本书——检视阅读模板
    Redis教程——检视阅读
    如何阅读一本书——分析阅读Pre
    SVN常用功能介绍(二)
    SVN常用功能介绍(一)
    分页sql大全
    .NetCore 登录(密码盐+随机数)
  • 原文地址:https://www.cnblogs.com/xiaobaidashu/p/11871763.html
Copyright © 2011-2022 走看看