二叉树深度优先遍历利用栈(先进后出的特性-先入栈右子树)
宽度优先遍历利用队列(先进先出的特性,先入队左子树)
static class Node {
int value ;
Node left;
Node right;
Node(int v){
this.value = v;
}
}
//使用栈方式深度遍历二叉树
public static void DepthTree(Node node){
Stack<Node> stack = new Stack<>();
stack.add(node);
while (!stack.isEmpty()){
node = stack.pop();
System.out.print(node.value);
if(node.right!=null){
stack.add(node.right);
}
if(node.left!=null){
stack.add(node.left);
}
}
}
//利用队列方式宽度遍历二叉树
public static void leveTraversal(Node head){
if(head!=null){
Queue<Node> deque = new LinkedList();
deque.add(head);
while (!deque.isEmpty()){
head = deque.poll();
System.out.print(head.value+" ");
if(head.left!=null){
deque.add(head.left);
}
if(head.right!=null){
deque.add(head.right);
}
}
}
}