/*
* 面试题32:从上到下打印二叉树
* 题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印。
* 解题思路:Deque是Queue的子接口,我们知道Queue是一种队列形式,而Deque则是双向队列,它支持从两个端点方向检索和插入元素
* 当队列不空的时候,重复以下操作。
* 1、弹出一个元素。作为当前的根节点。
* 2、如果根节点有左孩子,访问左孩子,并将左孩子入队。
* 3、如果根节点有右孩子,访问右孩子,并将右孩子入队。
*/
import java.util.ArrayList;
import java.util.Deque;
import java.util.LinkedList;
class TreeNode4 {
int val = 0;
TreeNode4 left = null;
TreeNode4 right = null;
public TreeNode4(int val) {
this.val = val;
}
}
public class No32PrintFromTopToBottom {
public static void main(String[] args) {
No32PrintFromTopToBottom n = new No32PrintFromTopToBottom();
TreeNode4 root = new TreeNode4(8);
TreeNode4 node6 = new TreeNode4(6);
TreeNode4 node10 = new TreeNode4(10);
root.left = node6;
root.right = node10;
TreeNode4 node5 = new TreeNode4(5);
TreeNode4 node7 = new TreeNode4(7);
node6.left = node5;
node6.right = node7;
TreeNode4 node9 = new TreeNode4(9);
TreeNode4 node11 = new TreeNode4(11);
node10.left = node9;
node10.right = node11;
ArrayList<Integer> a = n.PrintFromTopToBottom(root);
for(int i:a){
System.out.print(i+" ");
}
}
public ArrayList<Integer> PrintFromTopToBottom(TreeNode4 root) {
ArrayList<Integer> list = new ArrayList<Integer>();
Deque<TreeNode4> deque = new LinkedList<TreeNode4>();
if (root == null) {
return list;
}
deque.add(root);
while (!deque.isEmpty()) {
TreeNode4 t = deque.pop();
list.add(t.val);
if (t.left != null) deque.add(t.left);
if (t.right != null) deque.add(t.right);
}
return list;
}
}
面试题32:从上到下打印二叉树
最新推荐文章于 2020-08-08 23:02:32 发布