博客
关于我
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/

你可能感兴趣的文章
第四章 串、数组和广义表 —— BF算法和KMP算法
查看>>
第五章 树和二叉树 —— 哈夫曼算法
查看>>
第四章 随机的数据特征 4.4 矩、协方差矩阵
查看>>
[选拔赛1]花园(矩阵快速幂),JM的月亮神树(最短路),保护出题人(斜率优化)
查看>>
76. 最小覆盖子串
查看>>
牛客——链表指定区间翻转
查看>>
DLA:一种深度网络特征融合方法
查看>>
890. 查找和替换模式
查看>>
598. 范围求和 II
查看>>
leetcode练习2(链表表示两数之和)
查看>>
leetcode114(二叉树展开为链表)
查看>>
leetcode226(翻转二叉树:二叉树的遍历)
查看>>
leetcode47(全排列II:回溯+哈希去重)
查看>>
java —— this 关键字
查看>>
java —— static 关键字
查看>>
POJ 1797 最短路变形所有路径最小边的最大值
查看>>
Emacs:Eldoc 全局化了 | Linux 中国
查看>>
Richard Stallman 被迫辞去 FSF 主席的职务 | Linux 中国
查看>>
Firefox 69 已可在 Fedora 中获取 | Linux 中国
查看>>
Linux 中国徽标征集活动结果 | Linux 中国
查看>>