第十三题 从上往下遍历二叉树

来源:互联网 发布:淘宝店铺装修网站 编辑:程序博客网 时间:2024/06/06 20:57
题目:输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。

例如输入

      8
    /  \
   6    10
  /\     /\
 5  7   9  11

输出8   6   10   5   7   9   11。

#include <iostream>#include <deque>using namespace std;struct tree{int value;tree *left;tree *right;};void addTree(tree *&ptr,int value){if (ptr==nullptr){tree *currentptr=new tree();currentptr->value=value;currentptr->left=nullptr;currentptr->right=nullptr;ptr=currentptr;}else{if (ptr->value>value){addTree(ptr->left,value);}else{addTree(ptr->right,value);}}}void outtree(tree *ptr){if (ptr==nullptr){return;}deque<tree *> ktree;ktree.push_back(ptr);while (!ktree.empty()){tree *node=ktree.front();ktree.pop_front();cout<<node->value<<endl;if (node->left){ktree.push_back(node->left);}if (node->right){ktree.push_back(node->right);}}}int main(){tree *root=nullptr;addTree(root,8);addTree(root,10);addTree(root,6);addTree(root,9);addTree(root,11);addTree(root,5);addTree(root,7);outtree(root);return 0;}



0 0