#include <bits/stdc++.h>
using namespace std;
int a[100000];
int n;
typedef struct BinTreeNode
{
int data;
struct BinTreeNode *leftchild,*rightchild;
}BinTreeNode,*BinTree;
void CreateBinTree(BinTree &T)
{
int ch;
scanf("%d",&ch);
if(ch==-1) T=NULL;
else
{
T=(BinTree)malloc(sizeof(BinTreeNode));
T->data=ch;
CreateBinTree(T->leftchild);
CreateBinTree(T->rightchild);
}
}
int height(BinTree t)
{
if (t == NULL) return 0;
else {
int m = height(t -> leftchild);
int n = height(t -> rightchild);
return (m > n)? m + 1:n + 1;
}
}
int leafCount(BinTree t)
{
if (t == NULL) return 0;
else if (!t -> leftchild && !t -> rightchild) return 1;
else return (leafCount(t -> leftchild) + leafCount(t -> rightchild));
}
void postorder(BinTree t)
{
if (t == NULL)
return;
else {
postorder(t -> leftchild);
postorder(t -> rightchild);
cout << t -> data << " ";
}
}
int main()
{
BinTree T;
int n;
cin >> n;
CreateBinTree(T);
cout << height(T) << endl;
cout << leafCount(T) <<endl;
postorder(T);
return 0;
}
(c++)数组实现前序建立二叉树,输出节点个数,树的高度和后序遍历结果
最新推荐文章于 2021-07-05 16:48:31 发布