[leetcode]Flatten Binary Tree to Linked List

先序遍历的一个变化。记录下上次的节点就行了。

public class Solution {
    public void flatten(TreeNode root) {
        Stack<TreeNode> stack = new Stack<TreeNode>();
        TreeNode n = root;
        TreeNode last = null;
        while (n != null || !stack.empty()) {
            if (n != null) {
                if (last != null) {
                    last.left = null;
                    last.right = n; 
                }
                last = n;
                if (n.right != null) {
                    stack.push(n.right);
                }
                n = n.left;
            }
            else {
                n = stack.pop();
            }
        }
    }
}

  

原文地址:https://www.cnblogs.com/lautsie/p/3267682.html