1 树的深度优先遍历
思想:从根节点出发对每一个节点不断深入直到不能再深入为止,利用数据结构栈。
java实现
public static void depthFirst(Node root){
Stack<Node> stack = new Stack<Node>();
stack.push(root);
while(!stack.isEmpty()){
Node node = stack.pop();
System.out.print(node.value+" ");
if(node.right!=null)
stack.push(node.right);
if(node.left!=null)
stack.push(node.right);
}
}
2 树的广度优先遍历
思想:一层一层的访问节点,利用数据结构队列
public static void levelFirst(Node root){
Deque<Node> deque = new Deque<Node>();
deque.add(root);
while(!deque.isEmpty()){
Node node = deque.peekFirst();
System.out.print(node.value+ " ");
if(node.left!=null)
deque.add(node.left);
if(node.right!=null)
deque.add(node.right);
}
}