您当前的位置: 首页 >  算法

Phil Arist

暂无认证

  • 5浏览

    0关注

    276博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

算法修炼60、把二叉树打印成多行

Phil Arist 发布时间:2021-11-01 14:00:12 ,浏览量:5

题目描述:

  从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。

  解题思路:

  本题可类比第22题:从上往下打印二叉树,这两道题实际上是一回事,只不过这里我们多了一个分行打印的要求,实际上大同小异,稍加修改即可。

  在二叉树层次遍历上,我们使用的是队列,借助队列先进先出的性质实现,具体规律:每次打印一个结点时,如果该结点有子结点,则将子结点放到队列的末尾,接下来取出队列的头重复前面的打印动作,直到队列中所有的结点都打印完毕。在此基础上我们考虑这里的分行要求,不难想到我们只要增加两个变量即可:一个用于保存当前层中还没有打印的结点个数,另一个用于记录下一层结点的数目。而使用队列的话,实际上这两个变量可以统一用队列的长度来实现。

  举例:

  编程实现(Java):

import java.util.*;
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;
    }
}
public class Solution {
    ArrayList Print(TreeNode pRoot) {
        //思路:使用队列实现
        ArrayList res=new ArrayList();
        if(pRoot==null)
            return res;
        Queue queue = new LinkedList(); //借助队列实现
        TreeNode root=pRoot;
        queue.add(root);
        while(!queue.isEmpty()){ //队列不空
            //当前队列长度代表当前这一层节点个数
            int len=queue.size();
            ArrayList row=new ArrayList();
            for(int i=0;i            
关注
打赏
1662360869
查看更多评论
0.2612s