2021-11-09

二叉树后序遍历(祖先结点)@TOC

#`#include <stdio.h>
#include<stdlib.h>

typedef struct BiTNode{
int data;//数据域
struct BiTNode *lchild,*rchild;//左右孩子指针
}BiTNode,*BiTree;

typedef struct{
BiTree t;
int tag;
}stack;

void search(BiTree T,int x)
{
stack s[20];
int top = -1;
while(top > -1 || T != NULL){
while(T != NULL){
top++;
s[top].t = T;
s[top].tag = 0;
T = T->lchild;
}//while
while(top != -1 && s[top].tag == 1)
{
//出栈访问时要先访问再出栈,先printf再top–
//printf("%d\n",s[top].t->data);
/****叶子结点的所有祖先
if(!(s[top].t->lchild && s[top].t->rchild)){
for(int i = top - 1;i >-1;i–)
{
printf("%d",s[i].t->data);//要用i不能用top
}
printf("\n");
}//if
****/
/*****所找节点的祖先
if(s[top].t->data == x)
{
for(int i = top;i > -1;i–)
{
printf("%d",s[i].t->data);
}
}
*******/
top–;
}
if(top != -1){
s[top].tag = 1;
T = s[top].t->rchild;
}

}

}`

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值