求二叉树中值为x的结点的个数

来源:互联网 发布:安卓画板软件 编辑:程序博客网 时间:2024/03/28 16:04
#include<iostream>#define N 63using namespace std;char str[] = "ab#d##a#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 getNodeWithElement(BiTree T, int element){if(NULL == T)return 0;if(element == T->data)return 1 + getNodeWithElement(T->leftChild, element) + getNodeWithElement(T->rightChild, element);return getNodeWithElement(T->leftChild, element) + getNodeWithElement(T->rightChild, element);}int main(){BiTree T1;T1 = createBiTree1();cout << getNodeWithElement(T1, 20) << endl;BiTree T2;createBiTree2(T2);cout << getNodeWithElement(T2, 'a') << endl;cout << getNodeWithElement(T2, 'b') << endl;cout << getNodeWithElement(T2, 'A') << endl;return 0;}


 

原创粉丝点击