数据结构 二叉树 用二叉链链表存储结构 写出删除二叉树所有的叶子节点的算法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构 二叉树 用二叉链链表存储结构 写出删除二叉树所有的叶子节点的算法相关的知识,希望对你有一定的参考价值。

//下面有运行结果
#include<stdio.h>
#include<stdlib.h>
#define OVERFLOW 0
#define ERROR 0
#define OK 1
typedef char TElemType;
typedef int Status;
typedef struct BiTNode

TElemType data;
struct BiTNode *lchild,*rchild;
BiTNode,*BiTree;
Status InitTree(BiTree &T)

T=(BiTree)malloc(sizeof(BiTNode));
T->lchild=NULL;
T->rchild=NULL;
if(!T) exit(OVERFLOW);
else printf("二叉树初始化成功!\n");
return OK;

Status CreateBiTree(BiTree &T)

char ch;
scanf("%c",&ch);
if(ch=='#')
T=NULL;
else

if(!(T=(BiTree)malloc(sizeof(BiTNode))))
exit(OVERFLOW);
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);

return OK;

//初始条件:二叉树T存在,Visit是对结点操作的应用函数
//操作结果:先序递归遍历T,对每个结点调用函数Visit一次且仅一次
void PreOrderTraverse(BiTree T)

if (T)//T不空

printf("%c",T->data);//先访问根结点
PreOrderTraverse(T->lchild);//再先序遍历左子树
PreOrderTraverse(T->rchild);//最后先序遍历右子树


Status free_Leaf(BiTree &T)

if(T)

free_Leaf(T->lchild);
if (!T->lchild && !T->rchild)

T->data = ' ';//属于假删除,将叶子结点的值置为空
//free(T);
//T = NULL;

else
free_Leaf(T->rchild);

return OK;

int main()

BiTree T;
InitTree(T);
printf("按先序顺序输入你要建立的二叉树(#代表空):");
CreateBiTree(T);
printf("先序遍历所创建的二叉树:\n");
PreOrderTraverse(T);
printf("\n删除其所有的叶子结点...\n");
free_Leaf(T);

printf("\n删除所有叶子结点后重新遍历该二叉树\n");
if (T)
PreOrderTraverse(T);
printf("\n");
return 0;

/*
输出结果:
------------------------
二叉树初始化成功!
按先序顺序输入你要建立的二叉树(#代表空):abc###d##
先序遍历所创建的二叉树:
abcd
删除其所有的叶子结点...
删除所有叶子结点后重新遍历该二叉树
ab
Press any key to continue
------------------------------
*/
参考技术A bool* deleteLeaf(Node * curNode)

if(curNode==null)

return false;

if(deleteLeaf(curNode->left)==null&&deleteLeaf(curNode->right==null))

//此时说明当前节点为叶子节点,故删除该节点

delete curNode;
return ture;


来自:求助得到的回答
参考技术A ,,,

以上是关于数据结构 二叉树 用二叉链链表存储结构 写出删除二叉树所有的叶子节点的算法的主要内容,如果未能解决你的问题,请参考以下文章

已知一颗二叉链表表示二叉树T ,编写函数,判断T是不是为完全二叉树。先

二叉树与链表

用C语言编写程序,创建一个二叉树的二叉链表结构,然后输出从根结点到所有叶子结点的路径。

1、创建一棵二叉树,以二叉链表作存储结构,实现先根遍历算法 2、创建一棵二叉树,实现先根遍历算法、中根

如何在数据结构中,以二叉链表为存储结构,建立一棵二叉树,输出其先序,中序,后序遍历序列,统计其叶子

C语言数据结构树和二叉树的问题