剑指Offer——之字形打印二叉树
来源:互联网 发布:mac 鼠标 触摸板 编辑:程序博客网 时间:2024/06/18 17:54
题目描述:实现一个函数按照之子形顺序打印二叉树。即第一行按照从左向右的顺序打印,第二层按照从右向左的顺序打印,第三行按照从左向右的顺序打印,其他以此类推。
分析:采用容器中的适配器stack,两个stack分别存储奇数行结点和偶数行结点。
如果当前打印的是奇数行(第一、三层等),则先保存左子结点,再保存右子结点。
如果当前打印的是偶数行(第二、四层等),则先保存右子结点,再保存左子节点。
void printree(BinaryTreeNode *pRoot){ if(pRoot==NULL) return; stack<BinaryTreeNode*> levels[2]; int cur=0; int next=1; levels[cur].push(pRoot); while(!levels[0].empty() || !levels[1].empty()) { BinaryTreeNode *pNode=pRoot; pNode=levels[cur].top(); levels[cur].pop(); printf("%d ",pNode->m_nValue); if(cur==0)//当前打印行为奇数数 { if(pNode->m_nLeft!=NULL) levels[next].push(pNode->m_nLeft); if(pNode->m_nRight!=NULL) levels[next].push(pNode->m_nRight); } else//当前打印行为偶数 { if(pNode->m_nRight!=NULL) levels[next].push(pNode->m_nRight); if(pNode->m_nLeft!=NULL) levels[next].push(pNode->m_nLeft); } if(levels[cur].empty()) { printf("\n"); cur=1-cur; next=1-next; } }}
0 0
- 《剑指offer》——按之字形顺序打印二叉树
- 剑指Offer——之字形打印二叉树
- 剑指offer——按之字形顺序打印二叉树
- 剑指offer——按之字形打印二叉树
- 剑指offer——之字形打印二叉树(一般)
- 剑指offer——按之字形顺序打印二叉树
- 剑指offer—按之字形顺序打印二叉树
- 剑指offer—按之字形顺序打印二叉树
- 剑指offer----之字形打印二叉树
- 剑指offer(C++)——按之字形顺序打印二叉树
- 剑指offer——59.按之字形顺序打印二叉树
- 剑指offer——面试题61:按之字形顺序打印二叉树
- 剑指offer--按之字形顺序打印二叉树
- 剑指offer 61 - 按之字形打印二叉树
- 《剑指offer》按之字形顺序打印二叉树
- 剑指offer:按之字形顺序打印二叉树
- 剑指offer(62):之字形打印二叉树
- 剑指offer:按之字形顺序打印二叉树
- 关于imageloader的一些理解
- 94. Binary Tree Inorder Traversal #Medium
- 多个if else替换为一个if判断
- java中的线程池优点以及处理原理
- js prototype介绍
- 剑指Offer——之字形打印二叉树
- [ObjectC]Objective-C内存管理之---属性修饰词
- javascript调用qt javaScriptWindowObjectCleared()信号
- PLSQL连接本地的ORACLE数据库
- AE接口解析
- 对SharedPreferences的个人使用习惯
- 1.算法开篇
- XListView上拉刷新,下拉加载
- Ajax使用的五步法