题目链接:flatten-binary-tree-to-linked-list
import java.util.Stack;
/**
*
Given a binary tree, flatten it to a linked list in-place.
For example,
Given
1
/ \
2 5
/ \ \
3 4 6
The flattened tree should look like:
1
\
2
\
3
\
4
\
5
\
6
Hints:
If you notice carefully in the flattened tree, each node's right child points to the next node of a pre-order traversal.
*
*/
public class FlattenBinaryTreeToLinkedList {
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
}
// 225 / 225 test cases passed.
// Status: Accepted
// Runtime: 254 ms
// Submitted: 0 minutes ago
//时间复杂度: O(n), 空间复杂度: O(n)
public void flatten(TreeNode root) {
if(root == null) return;
Stack<TreeNode> stack = new Stack<TreeNode>();
stack.add(root);
while(!stack.isEmpty()) {
TreeNode node = stack.pop();
if(node.right != null) {
stack.add(node.right);
}
if(node.left != null) {
stack.add(node.left);
}
if(!stack.isEmpty()) {
node.right = stack.peek();
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}