给定一个二叉树,原地将它展开为链表。
例如,给定二叉树
/**
* 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 ;
Stack<TreeNode> stack=new Stack();
while(root!= null || !stack.isEmpty()){
while(root!= null){
stack.push(root);
root=root.left;
}
if(!stack.isEmpty()){
TreeNode node=stack.pop();
TreeNode temp=node.right;
node.right=node.left;
node.left=null;
while(node.right!=null){
node=node.right;
}
node.right=temp;
root=temp;
}
}
}
}