二叉树学习有感
本次代码均由本人独立思考后写出,产生了不少问题,希望在写代码的过程中,逐渐提升自己~
话不多说,我们开始吧!
源代码如下:
#include"stdafx.h"
#include<iostream>
using namespace std;
#define Max 100
typedef struct node
{
struct node *lchild;
struct node *rchild;
int data;
}BTNode;
void CreateBTNode(BTNode *&b,char str[])
{
BTNode *St[Max],*p;
int k;
int top=-1;
int d=0;
char ch;
ch=str[d];
while(ch!='\0')
{
switch(ch)
{
case '(':St[top++]=p;k=1;break;
case ')':St[top--]=p;break;
case ',':k=2;break;
default:
p=(BTNode *)malloc(sizeof(BTNode));
p->data=ch;
p->lchild=p->rchild=NULL;
if(b==NULL)
b=p;
else
{
switch(k)
{
case 1:St[top]->lchild=p;break;
case 2:St[top]->rchild=p;break;
}
}
}
++d;
ch=str[d];
}
}
void DispBTNode(BTNode *b)
{
BTNode *p;
p=b;
int i=0;
while(p!=NULL)
{
printf("结点%d的值是:%d\n",i,p->data);
if(p->lchild!=NULL)
{
printf("它的左孩子结点值