【剑指offer系列】 从上往下打印二叉树___23
来源:互联网 发布:淘宝联盟怎么拿返利 编辑:程序博客网 时间:2024/05/17 04:37
题目描述:
给定一棵二叉树的根节点,按照从上往下的顺序打印每一个节点,同一层的节点按照从左往右的顺序打印
示例:
分析:
遇到这中涉及到二叉树的层次问题的时候,利用队列这种数据结构可以使问题变得非常简单。
首先将根节点加入队列,然后从队列头部取出根节点。
如果节点的左右孩子非空,则依次将其加入到队列尾部。
最终所有节点在队列中的顺序恰好是树的层次遍历的顺序。
代码:
void levelPrint(treeNode *root){ if(root==NULL) return; queue<treeNode *> q; q.push(root); while(!q.empty()){ treeNode *t=q.front(); q.pop(); cout<<t->val<<endl; if(t->left) q.push(t->left); if(t->right) q.push(t->right); } }
相关问题:
1、Populating Next Right Pointers in Each Node (leetcode 116 & 117)
若二叉树中每个节点除了左右孩子节点指针外,还有一个next指针。
请完成一个函数,实现将每个节点的next指针指向同一层中的右边一个节点。若右边没有节点,则指向NULL
示例:
分析:
这一题的做法与上一题基本相同,同样利用队列这一数据结构。不过我们可以在每一层遍历完后向队列中加入一个NULL指针,用于标识这一层的所有节点已经全部遍历完
代码:
void connect(TreeLinkNode *root) { if(root==NULL) return; queue<TreeLinkNode *> q; q.push(root); q.push(NULL); TreeLinkNode *head=NULL; while(!q.empty()){ TreeLinkNode *t=q.front(); q.pop(); if(t){ if(t->left) q.push(t->left); if(t->right) q.push(t->right); }else{ if(!q.empty()) q.push(NULL); //为每一层的末尾加入一个NULL节点 } if(head){ head->next=t; //给每个节点的next指针赋值 head=head->next; }else{ head=t; } } }
0 0
- 【剑指offer系列】 从上往下打印二叉树___23
- 剑指offer系列源码-从上往下打印二叉树
- 剑指Offer系列---(25)从上往下打印二叉树
- 剑指offer系列-T23从上往下打印二叉树
- 剑指offer: 从上往下打印二叉树(树)
- 剑指offer:从上往下打印二叉树
- 剑指offer--从上往下打印二叉树
- 剑指Offer之 - 从上往下打印二叉树
- 剑指offer 23 - 从上往下打印二叉树
- 剑指offer之从上往下打印二叉树
- 《剑指offer》之从上往下打印二叉树
- 《剑指offer》从上往下打印二叉树
- 剑指offer—从上往下打印二叉树
- 剑指Offer-23-从上往下打印二叉树
- 剑指offer:从上往下打印二叉树
- 《剑指offer》——从上往下打印二叉树
- 剑指offer-从上往下打印二叉树
- 剑指offer 22 从上往下打印二叉树
- 极限安全新闻播报(04.09)
- android启动--深入理解init进程
- BottomSheetBehavior底部弹出窗口的用法
- sockjs-web实时通信应用解决方案
- 第四章:Shiro的身份认证(Authentication)
- 【剑指offer系列】 从上往下打印二叉树___23
- no_merge/merge vs no_unnest/unnest
- 【SASS】 一个Opacity混合器(外加如何让背景透明 文字不透明)
- Android -- SurfaceFlinger 概要分析系列
- 【Android基础】电话拨号器
- Servlet监听器示例
- java实现寻路
- 扫码登录流程
- leetcode---Length of Last Word---字符串