老生常谈了,笔试又碰到,索性总结一下:
思路很简单,根入队,然后出队并访问,然后入队左子节点(如果不空的话),再入队右子节点(如果不空的话),循环往下,直到队列为空。
import java.util.LinkedList;
class TreeNode{
int val;
TreeNode left;
TreeNode right;
public TreeNode(int val) {
this.val = val;
}
}
public class Test {
public static void traverse(TreeNode root){
LinkedList<TreeNode> layer = new LinkedList<>();
layer.add(root);
TreeNode index = root;
while(!layer.isEmpty()){
TreeNode cur = layer.poll();
System.out.println(cur.val);
if(cur.left!=null){
layer.offer(cur.left);
}
if(cur.right!=null){
layer.add(cur.right);
}
}
}
public static void main(String[] args){
TreeNode root = new TreeNode(1);
root.left = new TreeNode(2);
root.right = new TreeNode(3);
root.left.left = new TreeNode(4);
root.left.right = new TreeNode(5);
root.right.left = new TreeNode(6);
root.right.right = new TreeNode(7);
traverse(root);
}
}