用二级指针求解二叉树根节点
来源:互联网 发布:高校大数据平台 编辑:程序博客网 时间:2024/05/22 12:43
写了这个算法,总算有点理解二级指针了。
#include <stdio.h>
#include <stdlib.h>
#define OVERFLOW -2
#define INFEASIBLE -1
#define ERROR 0
#define OK 1
#define TRUE 1
#define FALSE 0
typedef int TElemType;
TElemType Nil=0;
typedef struct BiTNode
...{
TElemType data;
BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
int InitBiTree(BiTree *T)
...{
*T=NULL;
return OK;
}
void CreateBiTree(BiTree *T)
...{
TElemType ch;
scanf("%d",&ch);
if(ch==Nil)
(*T)=NULL;
else
...{
(*T)=(BiTree)malloc(sizeof(BiTNode));
if(!(*T))
exit(OVERFLOW);
(*T)->data=ch;
CreateBiTree(&(*T)->lchild);
CreateBiTree(&(*T)->rchild);
}
}
int BiTreeEmpty(BiTree *T)
...{ // 初始条件: 二叉树T存在
// 操作结果: 若T为空二叉树,则返回TRUE,否则FALSE
if(*T)
return FALSE;
else
return TRUE;
}
TElemType Root(BiTree *T)
...{ // 初始条件: 二叉树T存在。操作结果: 返回T的根
if(BiTreeEmpty(&(*T)))
return Nil;
else
return (*T)->data;
}
void main()
...{
TElemType e;
BiTNode* T;
InitBiTree(&T);
printf("请先序输入二叉树(如:1 2 0 0 0表示1为根结点,2为左子树的二叉树) ");
CreateBiTree(&T);
e=Root(&T);
if(e==0)printf("二叉树无根节点!/n");
else
printf("二叉树根结点:%d ",e);
}
#include <stdlib.h>
#define OVERFLOW -2
#define INFEASIBLE -1
#define ERROR 0
#define OK 1
#define TRUE 1
#define FALSE 0
typedef int TElemType;
TElemType Nil=0;
typedef struct BiTNode
...{
TElemType data;
BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
int InitBiTree(BiTree *T)
...{
*T=NULL;
return OK;
}
void CreateBiTree(BiTree *T)
...{
TElemType ch;
scanf("%d",&ch);
if(ch==Nil)
(*T)=NULL;
else
...{
(*T)=(BiTree)malloc(sizeof(BiTNode));
if(!(*T))
exit(OVERFLOW);
(*T)->data=ch;
CreateBiTree(&(*T)->lchild);
CreateBiTree(&(*T)->rchild);
}
}
int BiTreeEmpty(BiTree *T)
...{ // 初始条件: 二叉树T存在
// 操作结果: 若T为空二叉树,则返回TRUE,否则FALSE
if(*T)
return FALSE;
else
return TRUE;
}
TElemType Root(BiTree *T)
...{ // 初始条件: 二叉树T存在。操作结果: 返回T的根
if(BiTreeEmpty(&(*T)))
return Nil;
else
return (*T)->data;
}
void main()
...{
TElemType e;
BiTNode* T;
InitBiTree(&T);
printf("请先序输入二叉树(如:1 2 0 0 0表示1为根结点,2为左子树的二叉树) ");
CreateBiTree(&T);
e=Root(&T);
if(e==0)printf("二叉树无根节点!/n");
else
printf("二叉树根结点:%d ",e);
}
因为在CreateBiTree() 中会分配内存给数据,所以主函数内不进行内存分配,即不按如下定义:
BiTNode T;
- 用二级指针求解二叉树根节点
- 二叉树根节点到指定节点的路径
- java--数据结构--二叉树根节点到指定节点的路径
- 二叉树常见为什么用二级指针
- 求二叉树根到指定节点的路径
- 完全二叉树根据节点个数求叶子个数
- 腾讯测试题-满二叉排序树根节点
- 用windbg寻找设备树根节点
- 通过二级指针插入节点
- 利用二级指针删除节点
- 用二级指针删除单链表的一个节点
- 面试经典(16)--二叉树根节点到指定节点的路径
- 二叉树为什么用二级指针来构造的原因
- 用二级指针作为形参建立二叉树
- 满二叉树根据前序求后序
- 二叉树根据前序后序重建
- Sum Root to Leaf Numbers 求所有二叉树根到叶子节点路径之和 @LeetCode
- wustoj(二叉树根节点到指定结点的路径-非递归算法)
- 如何使用 ADO Stream 对象访问和修改 SQL Server BLOB 数据
- 带图片的,多列的DropDownList(转自孟宪会之精彩世界)
- 从今天开始建立自己的博客
- 实训C++语言设计——二进、八进和十六进制 表输出
- 中国惠普前总裁孙振耀的毕生经验之谈
- 用二级指针求解二叉树根节点
- 实训C++语言设计——接受两个非递减的线性表,并将它们合并为非递减的Lc
- 孙振耀撰文谈退休并畅谈人生
- DOM 文档对象事件模型及示例
- 覆盖层
- JS获得DataGrid的值
- 5个ASP.NET小技巧~
- css 命名规范...
- 用Jboss开发时如何摆脱部署的麻烦?