leetcode114(二叉树展开为链表)
发布日期:2021-05-06 14:10:12 浏览次数:8 分类:技术文章

本文共 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
上一篇:leetcode415(字符串相加)
下一篇:leetcode632(最小区间)

发表评论

最新留言

很好
[***.229.124.182]2025年03月12日 20时23分05秒