首页 > 其他 > 详细

第114题:二叉树展开为链表

时间:2019-11-16 15:09:37      阅读:83      评论:0      收藏:0      [点我收藏+]

一. 问题描述

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

例如,给定二叉树

      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);
           }  
       }
    }
}

 

第114题:二叉树展开为链表

原文:https://www.cnblogs.com/xiaobaidashu/p/11871763.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!