从上往下打印二叉树这个是不分行的,用一个队列就可以实现 class Solution { public: vector<int> PrintFromTopToBottom(TreeNode* root) { vector<int> result; queue<TreeNode* > container; if(root == NULL) return result; container.push(root); ){ TreeNode* rot = container.f…
题目描述:从上到下打印二叉树的节点,同一层的从左到右打印 思路:采用队列来存储单层的节点,然后通过删除队列的头结点操作,依次遍历每一层. 代码为: import java.util.ArrayList; /** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ //用ArrayList…
题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印.   思路: 用一个队列来辅助,先压入根节点,设置一个指针记录队列头位置,判断队头指针有没有孩子,有压入左右孩子,,,操作完一次,队头出队.   /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/ class Sol…
题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 牛客网链接 js代码 /* function TreeNode(x) { this.val = x; this.left = null; this.right = null; } */ function PrintFromTopToBottom(root) { // write code here if (!root) return [] const queue = [] const res = [] queue.push(roo…
题目: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 分析: 按层次打印二叉树的节点,重点就是我们在打印一层节点的时候,同时按顺序保存好当前节点的下一层节点,也就是左节点和右节点,当此层节点打印完毕后,再打印刚才保存好的节点序列,也就是广度优先遍历.我们可以使用两个数组分别用来保存打印层节点,和下一层节点,在当前层结束后,将下层数组赋给打印数组,循环执行,知道打印数组为空,也就打印完毕了. 也可以使用队列来打印二叉树,每打印一个节点,就将这个节点的左右节点添加进队列中,直到队列为空.…
层序遍历,队列 ------------------------------------------------------------------------------------- 时间限制:1秒 空间限制:32768K 热度指数:314273 算法知识视频讲解 题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeN…
没有把队列的头部弹出,出现内存错误:…
该题目来源于牛客网<剑指offer>专题. 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. Go语言实现: type TreeNode struct { Val int Left *TreeNode Right *TreeNode } ​ func printTreeNode(root *TreeNode) [][]int { var result [][]int if root == nil {…
1. 题目描述 /** 请实现一个函数按照之字形打印二叉树, 即第一行按照从左到右的顺序打印, 第二层按照从右至左的顺序打印, 第三行按照从左到右的顺序打印, 其他行以此类推. */ 2. 双向队列 /*思路:利用Java中的LinkedList的底层实现是双向链表的特点. 1)可用做队列,实现树的层次遍历 2)可双向遍历,奇数层时从前向后遍历,偶数层时从后向前遍历 */ 3. 代码(双向链表+层次遍历) import java.util.*; public class Solution { p…
题目描述: 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 分析: 我们都知道二叉树的层次遍历用的是队列. 但是这个的子树的结点是先进后出的,所以我们使用栈更加方便. 而且为了方便,我用了两个栈,因为不是每一次都是先进左子树再进右子树的. 代码: /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right;…