博客
关于我
leetcode114(二叉树展开为链表)
阅读量:274 次
发布时间:2019-03-03

本文共 1372 字,大约阅读时间需要 4 分钟。

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

例如,给定二叉树

在这里插入图片描述

将其展开为:

在这里插入图片描述

题解(一):先用递归的方法先序遍历二叉树,设置一个链表保存每一个二叉树结点,然后再按照此链表保存的二叉树结点重构二叉树

class TreeNode {            int val;         TreeNode left;         TreeNode right;         TreeNode() {   }         TreeNode(int val) {    this.val = val; }         TreeNode(int val, TreeNode left, TreeNode right) {            this.val = val;         this.left = left;         this.right = right;    }  }  class Solution {       public void flatten(TreeNode root) {           LinkedList
list=new LinkedList<>(); move(list,root); int size=list.size(); TreeNode temp=root; for(int i=1;i
linkedList,TreeNode root){ if(root!=null){ linkedList.add(root); move(linkedList,root.left); move(linkedList,root.right); } }}

题解(二):遍历二叉树的方法不一定是递归,二叉树的遍历本质上来说是DFS算法,我们还可以利用栈实现二叉树的遍历

class Solution {       public void flatten(TreeNode root) {           LinkedList
list=new LinkedList<>(); Stack
stack=new Stack<>(); TreeNode next=root; while(!stack.empty()||next!=null){ while(next!=null){ stack.push(next); list.add(next); next=next.left; } next=stack.pop().right; } int size=list.size(); TreeNode temp=root; for(int i=1;i

转载地址:http://ivsl.baihongyu.com/

你可能感兴趣的文章
UNITTEST测试框架的使用
查看>>
赠书和投票 | 你知道中国有哪些Server SAN厂商吗? 投票:你心目最好的HCI品牌是?
查看>>
区块链公链如何才能快起来
查看>>
linus下centos7防火墙设置
查看>>
学习笔记-----分布式事务基础理论,CAP组合方式
查看>>
Base理论介绍
查看>>
HashMap和ArrayList初始大小和扩容后的大小
查看>>
volatile关键字和AtomicInteger
查看>>
RedisTemplate中opsForValue()中的方法
查看>>
redisTemplate.opsForHash()
查看>>
Mac下安装jdk8
查看>>
知识框架梳理
查看>>
JUC知识
查看>>
lamba语法格式
查看>>
jvm栈和寄存器
查看>>
局部变量表
查看>>
循环体内,字符串的连接方式,使用StringBuilder的append方法进行扩展
查看>>
maven生命周期
查看>>
方法的绑定机制-静态绑定和动态绑定
查看>>
jvm
查看>>