假设二叉树中每个节点值为单个字符,采用二叉链存储结构存储。设计一个算法,求二叉树b的先序遍历序列中第k(1<=k<=二叉树中结点个数)个结点的值
#include<stdio.h>
typedef char ElemType;
typedef struct node
{
ElemType data;
struct node *lchild;
struct node *rchild;
}BINode;
int n=1;
ElemType PreNode(BINode *b,int k) //a指向二叉树的根结点
{
if(b==NULL)
return ' ';
if(n==k)
return b->data;
n++;
ElemType ch;
ch=PreNode(b->lchild,k); //遍历左子树
if(ch!=NULL) //如果左子树没有返回空,那么一定是所求的答案
return ch;
ch=PreNode(b->rchild,k); //如果左子树返回空,则要遍历右子树
return ch;
}
int main()
{
BINode *node1,*node2,*node3;
node1->data='a';
node2->data='b';
node3->data='c';
node1->lchild=node2;
node1->rchild=node3;
node2->lchild=NULL;
node2->rchild=NULL;
node3->lchild=NULL;
node3->rchild=NULL;
printf("%c",PreNode(node1,2));
return 0;
}
为什么我的输出结果什么都没有啊?