剑指offer系列——22.从上往下打印二叉树

Q:从上往下打印出二叉树的每个节点,同层节点从左至右打印。
T:简单而言就是层序遍历,使用队列。
A:

    vector<int> PrintFromTopToBottom(TreeNode* root) {
        queue<TreeNode*> q;
        vector<int> array;
        if(root == nullptr)
            return array;
        q.push(root);
        while(!q.empty()){
            TreeNode* node = q.front();
            if(node->left)
                q.push(node->left);
            if(node->right)
                q.push(node->right);
            array.push_back(node->val);
            q.pop();
        }
        return array;
    }

原文地址:https://www.cnblogs.com/xym4869/p/12283793.html

时间: 2024-10-09 12:18:17

剑指offer系列——22.从上往下打印二叉树的相关文章

剑指offer之【从上往下打印二叉树】

题目: 从上往下打印二叉树 链接: https://www.nowcoder.com/practice/7fe2212963db4790b57431d9ed259701?tpId=13&tqId=11175&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking 题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 思路: 建立一个序列:对当前点的左右子节点进行扫描,非空

剑指offer 23:从上往下打印二叉树

题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 解题思路 按照从左往右从上到下的顺序打印节点,需要我们维护一个队列,这个队列放入元素的顺序是访问队头节点(起始先放入根节点),则若当前节点的左右子树非空,则将左右子节点依次放入队尾,对所有节点执行此操作,然后按顺序遍历队列. C++代码实现: /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) :

[剑指Offer] 22.从上往下打印二叉树

[思路]广度优先遍历,队列实现 1 class Solution 2 { 3 public: 4 vector<int> PrintFromTopToBottom(TreeNode* root) 5 { 6 queue<TreeNode*> Queue; 7 vector<int> res; 8 if(root == NULL) 9 return res; 10 Queue.push(root); 11 while(!Queue.empty()) 12 { 13 res

剑指offer系列源码-从尾到头打印链表

ob地址 题目描述: 输入一个链表,从尾到头打印链表每个节点的值. 输入: 每个输入文件仅包含一组测试样例. 每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点.第一行是链表第一个节点的值,依次类推.当输入到-1时代表链表输入完毕.-1本身不属于链表. 输出: 对应每个测试案例,以从尾到头的顺序输出链表每个节点的值,每个值占一行. 样例输入: 1 2 3 4 5 -1 样例输出: 5 4 3 2 1 #include<iostream> #include<stdio.h&g

《剑指offer》:[61]按之字形顺序打印二叉树

题目:请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三层再按照从左到右打印,其他行以此类推. 例如:按之字形顺序打印二叉树的结果如下图: 打印结果: 1 3,2 4,5,6,7 15,14,13,12,11,10,9,8 方案:利用两个栈.时间复杂度O(N)+辅助空间2*O(N). 具体方法:我们在打印某一结点时,把下一层的子结点保存到相应的栈里.如果当前打印的是奇数层(例如第一层,第三层...第2*n+1层),则先保存左子结点再保存右子

剑指offer 59.树 按之字形顺序打印二叉树

题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 解题思路 用一个栈s1来存放奇数层节点,另一个栈s2来存放偶数层节点 代码如下 public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { int layer = 1; //s1存奇数层节点 Stack<TreeNode> s1 = new Stack&

剑指Offer对答如流系列 - 从上往下打印二叉树

面试题32:从上往下打印二叉树 题目描述 树的结构定义如下: public class Node{ int e; Node left; Node right; Node(int x) { e = x; } } (一)不分行从上到下打印二叉树 从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印. 比如下面二叉树,输出顺序为 8 6 10 5 7 9 11 (二)分行从上到下打印二叉树 从上到下按层打印二叉树,同一层的结点按从左到右的顺序打印,每一层打印到一行. 比如下面二叉树,输出

剑指Offer系列之题11~题15

目录 11.矩形覆盖 12.二进制中1的个数 13. 数值的整数次方 14.调整数组顺序使奇数位于偶数前面 15.链表中倒数第k个结点 11.矩形覆盖 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 比如n=3时,2*3的矩形块有3种覆盖方法: 斐波那契数列的应用 第一次竖着放一块类比为走一步,第一次横着放两块类比为走两步 代码与上面的斐波那契数列类题目类似,此处不再赘述:剑指Offer系列之题6~题10. 12.

剑指OFFER之从上往下打印二叉树(九度OJ1523)

题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 输入: 输入可能包含多个测试样例,输入以EOF结束.对于每个测试案例,输入的第一行一个整数n(1<=n<=1000, :n代表将要输入的二叉树元素的个数(节点从1开始编号).接下来一行有n个数字,代表第i个二叉树节点的元素的值.接下来有n行,每行有一个字母Ci.Ci='d'表示第i个节点有两子孩子,紧接着是左孩子编号和右孩子编号.Ci='l'表示第i个节点有一个左孩子,紧接着是左孩子的编号.Ci='r'表示第i个节点有一个右孩