求二叉树中所有结点的个数

来源:互联网 发布:淘宝女装海报素材 编辑:程序博客网 时间:2024/04/27 17:29

      实际上,在前面已经有涉及到该问题. 程序如下:

#include<iostream>#define N 63using namespace std;char str[] = "ab#d##c#e##";int i = -1;typedef struct node{struct node *leftChild;struct node *rightChild;char data;}BiTreeNode, *BiTree;//生成一个结点BiTreeNode *createNode(int i){BiTreeNode * q = new BiTreeNode;q->leftChild = NULL;q->rightChild = NULL;q->data = i;return q;}BiTree createBiTree1(){BiTreeNode *p[N] = {NULL};int i;for(i = 0; i < N; i++)p[i] = createNode(i + 1);// 把结点连接成树for(i = 0; i < N/2; i++){p[i]->leftChild = p[i * 2 + 1];p[i]->rightChild = p[i * 2 + 2];}return p[0];}void createBiTree2(BiTree &T){i++;char c;if(str[i] && '#' == (c = str[i]))T = NULL;else{T = new BiTreeNode;T->data = c;createBiTree2(T->leftChild);createBiTree2(T->rightChild);}}int getAllNode(BiTree T){if(NULL == T)return 0;return 1 + getAllNode(T->leftChild) + getAllNode(T->rightChild);}int main(){BiTree T1;T1 = createBiTree1();cout << getAllNode(T1) << endl;BiTree T2;createBiTree2(T2);cout << getAllNode(T2) << endl;return 0;}


 

原创粉丝点击