例如输入
8
/ \
6 10
/ \ / \
5 7 9 11
输出8 6 10 5 7 9 11。
以下代码是用字母代替数字,便于查看
#include <iostream> using namespace std; typedef struct BiNode { struct BiNode* lchild,*rchild; char data; }BiNode,*BiTree;
void createTree(BiTree& root) { char data; cout<<"please input"<<endl; cin>>data; if(data=='#') return; root = new BiNode; root->data = data; root->rchild= NULL; root->lchild =NULL; createTree(root->lchild); createTree(root->rchild); } void printNodeByLay(BiTree root, int lay) { if(NULL==root) return; if(1==lay) cout<<root->data<<" "; printNodeByLay(root->lchild,lay-1); printNodeByLay(root->rchild,lay-1); } int printLay(BiTree root) { if(NULL==root) return 0; int l = printLay(root->lchild); int r = printLay(root->rchild); return l>r?(l+1):(r+1); } int main() { BiTree root=NULL; createTree(root); cout<<printLay(root)<<endl; for(int i=1;i<=3;i++) printNodeByLay(root,i); return 0; }
输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印
最新推荐文章于 2020-08-16 18:28:03 发布