您的位置:首页 > 编程语言 > Java开发

Java实现-将二叉树拆成链表

2017-06-13 20:29 281 查看
将一棵二叉树按照前序遍历拆解成为一个
假链表
。所谓的假链表是说,用二叉树的 right 指针,来表示链表中的 next 指针。


 注意事项


不要忘记将左儿子标记为 null,否则你可能会得到空间溢出或是时间溢出。

您在真实的面试中是否遇到过这个题? 

Yes

样例

1
\
1          2
/ \          \
2   5    =>    3
/ \   \          \
3   4   6          4
\
5
\
6


挑战 

不使用额外的空间耗费。
/**
* Definition of TreeNode:
* public class TreeNode {
* public int val;
* public TreeNode left, right;
* public TreeNode(int val) {
* this.val = val;
* this.left = this.right = null;
* }
* }
*/
public class Solution {
/**
* @param root: a TreeNode, the root of the binary tree
* @return: nothing
*/
public void flatten(TreeNode root) {
// write your code here
if(root==null)
return;
Stack<TreeNode> stack=new Stack<TreeNode>();
stack.push(root);
while(!stack.isEmpty()){
TreeNode node=stack.pop();
if(node.right!=null){
stack.push(node.right);
}
if(node.left!=null)
stack.push(node.left);
node.left=null;
if(stack.isEmpty())
node.right=null;
else
node.right=stack.peek();
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息