菜鸟笔记
提升您的技术认知

《剑指offer》把二叉树打印成多行-ag真人游戏

阅读 : 279

题目描述:

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

解题思路:

  这道题比《剑指offer》按之字顺序打印二叉树简单一些。思路和上一道题一样,区别在于,这把是先入先出,使用队列即可。

按层次输出二叉树。

访问根节点,并将根节点入队。

当队列不空的时候,重复以下操作。

弹出一个元素。作为当前的根节点。
如果根节点有左孩子,访问左孩子,并将左孩子入队。
如果根节点有右孩子,访问右孩子,并将右孩子入队。

代码实现(c )

/*
struct treenode {
    int val;
    struct treenode *left;
    struct treenode *right;
    treenode(int x) :
            val(x), left(null), right(null) {
    }
};
*/
class solution {
public:
    vector > print(treenode* proot) {
        vector> res;
        if (proot == nullptr) return res;
        queue q;
        q.emplace(proot);
        while (!q.empty()){
            vector tmp;
            int size = q.size();
            for (int i = 0; i < size;   i){
                auto cur = q.front();
                q.pop();
                tmp.emplace_back(cur->val);
                if (cur->left) q.emplace(cur->left);
                if (cur->right) q.emplace(cur->right);
            }
            res.emplace_back(tmp);
        }
        return res;
    }
};

代码实现(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> layers = new arraylist>();
        if (proot == null)
            return layers;
        deque queue = new linkedlist();
        queue.offer(proot);
        while (!queue.isempty()) {
            arraylist layer = new arraylist();
            int cur = 0, size = queue.size();
            while (cur < size) {
                treenode node = queue.poll();
                layer.add(node.val);
                if (node.left != null) {
                    queue.offer(node.left);
                }
                if (node.right != null) {
                    queue.offer(node.right);
                }
                cur   ;
            }
            layers.add(layer);
        }
        return layers;
    }
}
网站地图