114 Flatten Binary Tree to Linked List 二叉树转换链表
Posted lina2014
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了114 Flatten Binary Tree to Linked List 二叉树转换链表相关的知识,希望对你有一定的参考价值。
给定一个二叉树,使用原地算法将它 “压扁” 成链表。
示例:
给出:
1
/ \\
2 5
/ \\ \\
3 4 6
压扁后变成如下:
1
\\
2
\\
3
\\
4
\\
5
\\
6
提示:
如果您细心观察该扁平树,则会发现每个节点的右侧子节点是以原二叉树前序遍历的次序指向下一个节点的。
详见:https://leetcode.com/problems/flatten-binary-tree-to-linked-list/description/
Java实现:
递归实现:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public void flatten(TreeNode root) { if(root==null){ return; } if(root.left!=null){ flatten(root.left); } if(root.right!=null){ flatten(root.right); } TreeNode tmp=root.right; root.right=root.left; root.left=null; while(root.right!=null){ root=root.right; } root.right=tmp; } }
非递归实现:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public void flatten(TreeNode root) { if(root==null){ return; } TreeNode cur=root; while(cur!=null){ if(cur.left!=null){ TreeNode p=cur.left; while(p.right!=null){ p=p.right; } p.right=cur.right; cur.right=cur.left; cur.left=null; } cur=cur.right; } } }
python实现:
参考:https://www.cnblogs.com/grandyang/p/4293853.html
以上是关于114 Flatten Binary Tree to Linked List 二叉树转换链表的主要内容,如果未能解决你的问题,请参考以下文章
114 Flatten Binary Tree to Linked List [Python]
114. Flatten Binary Tree to Linked List
114. Flatten Binary Tree to Linked List
114. Flatten Binary Tree to Linked List