剑指offer-按之字形顺序打印二叉树
2017-08-25 12:32
363 查看
题目:
实现一个函数按照之字形顺序打印二叉树。
按之字形顺序打印二叉树需要两个栈。我们在打印某一行结点时,吧下一层的子结点保存在相应的栈里。如果当前打印的是奇数层(第一,三),则先保存左子结点再保存右子结点的第一个栈里;如果当前打的是偶数层(二,四),则先保存右子结点再保存左子结点到第二个栈里。
实现一个函数按照之字形顺序打印二叉树。
按之字形顺序打印二叉树需要两个栈。我们在打印某一行结点时,吧下一层的子结点保存在相应的栈里。如果当前打印的是奇数层(第一,三),则先保存左子结点再保存右子结点的第一个栈里;如果当前打的是偶数层(二,四),则先保存右子结点再保存左子结点到第二个栈里。
struct BinaryTree { int data; BinaryTree *left; BinaryTree *right; }; void print(BinaryTree *pRoot) { if(pRoot==NULL) return; stack <BinaryTree *>level[2]; int cur=0; int next=1; level[cur].push(pRoot); while(!level[0].empty()||!level[1].empty()) { BinaryTree *pNode=level[cur].top(); level[cur].pop(); cout<<pNode->data; if(cur==0) { if(pNode->left!=NULL) level[next].push(pNode->left); if(pNode->right!=NULL) level[next].push(pNode->right); } else { if(pNode->right!=NULL) level[next].push(pNode->right); if(pNode->left!=NULL) level[next].push(pNode->left); } if(level[cur].empty()) { cout<<endl; cur=1-cur; next=1-next; } } }
相关文章推荐
- 剑指offer--按之字形顺序打印二叉树
- 剑指offer 面试题61 按之字形顺序打印二叉树
- 【剑指Offer】面试题61:按之字形顺序打印二叉树
- 剑指offer:按之字形顺序打印二叉树
- 【剑指offer-解题系列(60)】按之字形顺序打印二叉树
- 剑指offer——面试题61:按之字形顺序打印二叉树
- 剑指offer—按之字形顺序打印二叉树
- 剑指offer——59.按之字形顺序打印二叉树
- 剑指offer-59.按之字形顺序打印二叉树
- (C++)剑指offer-59:按之字形顺序打印二叉树(树)
- 剑指Offer_59_按之字形顺序打印二叉树
- 【剑指offer】按之字形顺序打印二叉树
- 剑指offer-按之字形顺序打印二叉树
- 【剑指Offer学习】【面试题61:按之字形顺序打印二叉树】
- 剑指offer--面试题61:按之字形顺序打印二叉树
- 剑指Offer--061-按之字形顺序打印二叉树
- 【剑指Offer】按之字形顺序打印二叉树
- 剑指offer面试题61 按之字形顺序打印二叉树(java实现)
- 剑指offer(五十三)之按之字形顺序打印二叉树
- 剑指Offer——按之字形顺序打印二叉树