#include <stdio.h>
#include <stdlib.h>
typedef struct tree
{ char data;
struct tree*lchild,*rchild;
}bintree;
typedef bintree *tree;
//ABD#E##FG###C##
//后序遍历:EBGFBCA
tree createtree(tree t)
{ char c=getchar();
if(c=='#') return NULL;
else
{ t=(tree)malloc(sizeof(bintree));
t->data=c;
t->lchild=createtree(t->lchild);
t->rchild=createtree(t->rchild);
}
return t;
}
tree findFir(tree t)
{ if(t==NULL) return t;
tree p=t;
while(p->lchild||p->rchild)
{
if(p->lchild!=NULL) p=p->lchild;
else if(p->rchild!=NULL) p=p->rchild;
}
return p;
}
int main()
{
/*后序遍历的尾点为根*/
tree t;
t=createtree(t);
printf("后序遍历的尾点为:%c\n",t->data);
t=findFir(t);
printf("后序遍历的首点为:%c",t->data);
return 0;
}
#include <stdlib.h>
typedef struct tree
{ char data;
struct tree*lchild,*rchild;
}bintree;
typedef bintree *tree;
//ABD#E##FG###C##
//后序遍历:EBGFBCA
tree createtree(tree t)
{ char c=getchar();
if(c=='#') return NULL;
else
{ t=(tree)malloc(sizeof(bintree));
t->data=c;
t->lchild=createtree(t->lchild);
t->rchild=createtree(t->rchild);
}
return t;
}
tree findFir(tree t)
{ if(t==NULL) return t;
tree p=t;
while(p->lchild||p->rchild)
{
if(p->lchild!=NULL) p=p->lchild;
else if(p->rchild!=NULL) p=p->rchild;
}
return p;
}
int main()
{
/*后序遍历的尾点为根*/
tree t;
t=createtree(t);
printf("后序遍历的尾点为:%c\n",t->data);
t=findFir(t);
printf("后序遍历的首点为:%c",t->data);
return 0;
}
本文详细介绍了如何通过后序遍历的方式在C++中找到二叉树的首节点和尾节点。通过递归创建二叉树并使用特定函数定位首尾节点,实现对二叉树结构的深入理解。
&spm=1001.2101.3001.5002&articleId=50119313&d=1&t=3&u=9df94461f5ea4d3db0efd3bf4ac30c50)
2121

被折叠的 条评论
为什么被折叠?



