public class TreeNode {
//二叉树节点定义
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x; }
}
一:前序遍历
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Deque;
import java.util.List;
class Solution {
class ColorNode {
TreeNode node;
char color;
public ColorNode(TreeNode node,char color){
this.node = node;
this.color = color;
}
}
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> ans = new ArrayList();
if(root == null) return ans;
Deque<ColorNode> stack = new ArrayDeque();
stack.addLast(new ColorNode(root, '0'));
while(!stack.isEmpty()) {
ColorNode cur = stack.pollLast();
if(cur.color == '0') {
if(cur.node.right != null) {
stack.addLast(new ColorNode(cur.node.right, '0'));
}
if(cur.node.left != null)