遍历
1.宽度优先遍历BFS
利用队列
//Node head;
LinkedList<Node> queue = new LinkedList<>();
// 或者 java.ulti.Queue<Node> queue = new java.util.LinkedList<>();
queue.add(head);
while(!queue.isEmpty()){
head = queue.pull();
//各类处理函数
if(head.left != null){
queue.add(head.left);
}
if(head.right != null){
queue.add(head.right);
}
}
2.深度优先遍历DFS
1.递归:前序中序后序
//Node head;
public class Solution {
public static void recurIter(Node head){
if (head == null){
return;
//先序处理
recurlter(head.left);
//中序处理
recurlter(head.right);
//后序处理
}
}
}
2.非递归:前序中序后序
利用栈
//Node head;
Stack<Node> stack = new Stack<Node>();
// 先序: 先打印当前节点,然后右子树和左子树依次进栈
// 中序
// 后序
}
网友评论