跟着郝斌学数据结构(10)——链式二叉树

news/2024/7/4 15:02:48


# include <stdio.h>
# include <malloc.h>


struct BTNode
{
char data;
struct BTNode * pLchild; //p是指针 L是左  child是孩子
struct BTNode * pRchild;
};



void PostTraverseBTree(struct BTNode * pT);
struct BTNode * CreateBTree(void);
void PreTraverseBTree(struct BTNode * pT);
void InTraverseBTree(struct BTNode * pT);


int main(void)
{
struct BTNode * pT = CreateBTree();

// PreTraverseBTree(pT);
// InTraverseBTree(pT);
PostTraverseBTree(pT);

return 0;
}


void PostTraverseBTree(struct BTNode * pT)
{
if (NULL != pT)
{
if (NULL != pT->pLchild)
{
PostTraverseBTree(pT->pLchild);
}
if (NULL != pT->pRchild)
{
PostTraverseBTree(pT->pRchild);
//pT->pLchild可以代表整个左子树
}
printf("%c\n", pT->data);
}
}


void InTraverseBTree(struct BTNode * pT)
{
if (NULL != pT)
{
if (NULL != pT->pLchild)
{
InTraverseBTree(pT->pLchild);
}

printf("%c\n", pT->data);

if (NULL != pT->pRchild)
{
InTraverseBTree(pT->pRchild);
//pT->pLchild可以代表整个左子树
}
}
}


void PreTraverseBTree(struct BTNode * pT)
{
if (NULL != pT)
{
printf("%c\n", pT->data);

if (NULL != pT->pLchild)
{
PreTraverseBTree(pT->pLchild);
}

if (NULL != pT->pRchild)
{
PreTraverseBTree(pT->pRchild);
//pT->pLchild可以代表整个左子树
}
}


/*
伪算法
先访问根节点
再先序访问左子树
再先序访问右子树
*/
}


struct BTNode * CreateBTree(void)
{
struct BTNode * pA = (struct BTNode *)malloc(sizeof(struct BTNode));
struct BTNode * pB = (struct BTNode *)malloc(sizeof(struct BTNode));
struct BTNode * pC = (struct BTNode *)malloc(sizeof(struct BTNode));
struct BTNode * pD = (struct BTNode *)malloc(sizeof(struct BTNode));
struct BTNode * pE = (struct BTNode *)malloc(sizeof(struct BTNode));


pA->data = 'A';
pB->data = 'B';
pC->data = 'C';
pD->data = 'D';
pE->data = 'E';


pA->pLchild = pB;
pA->pRchild = pC;
pB->pLchild = pB->pRchild = NULL;
pC->pLchild = pD;
pC->pRchild = NULL;
pD->pLchild = NULL;
pD->pRchild = pE;
pE->pLchild = pE->pRchild = NULL;


return pA;
}


http://www.niftyadmin.cn/n/3569832.html

相关文章

HTML5游戏开发实战之游戏自动保存进度

大概玩游戏的时候最讨厌的就是游戏没打完退出之后的状态了&#xff0c;但是在html5游戏上则不会出现这种情况。像site pinning特性, 试图给web浏览器web应用程序和常规的桌面应用同样的地位。 然而, 作为应用程序运行的网站想法太新了, 网页要维持客户端状态。 关闭Microsoft W…

Oracle的ha模式启停,Oracle 启停

Oracle 启停步骤一: 以管理员方式连接 oracle(1)oracle$ sqlplus /nolog; -- 不在 cmd 或者 terminal 当中暴露密码的登陆方式SQL> conn / as sysdba;(2)oracle$ sqlplus "/as sysdba" ; 或者 sqlplus / as sysdba;(3)oracle$ sqlplus scott/tiger; -- 非管理员用…

客户端和服务端对异常的不同处理态度【JFinal】

服务端后台管理这种如果代码中抛出异常&#xff0c;其Tx事务能起作用&#xff0c;但是在客户端与服务端交互的时候很多都是通过JSON或者XML格式&#xff0c;为了用户体验&#xff0c;成功的话就正常返回&#xff0c;不成功也应该给出失败的信息&#xff0c;而不是直接报505这种…

HTML5游戏开发实践之使用监控器

开发游戏的一个最大挑战是加入越来越多的游戏特性的同时能保持高帧率。好消息是, 浏览器比过去几年快了很多,HTML5开发游戏运行在恒定的60fps已经成为现实。这实属不易。 对于IE9,意味着要编写一个全新的JavaScript引擎, 使用多CPU内核和基于Direct2D的完全的硬件加速渲染管道。…

JSON的解析[Java-JSON、FastJSON、GSON]

Java-Json 一、 JSON &#xff08;JavaScript Object Notation&#xff09;一种简单的数据格式&#xff0c;比xml更轻巧。 Json建构于两种结构&#xff1a; 1、“名称/值”对的集合&#xff08;A collection of name/value pairs&#xff09;。不同的语言中&#xff0c…

CaSS中lisp命令不可用_干货在线 | 关于cass那些你不知道的秘密

南方数码地形地籍成图软件(简称CASS)是基于AutoCAD平台技术的GIS前端数据处理系统。CASS应用领域主要集中在下图的几个分支中&#xff0c;其中“行业应用”指CASS的一些行业应用版本&#xff0c;比如农村地籍版、勘测定界版、管线版等~小技巧画线&#xff1a;南方里面提供了强大…

内容查找

2019独角兽企业重金招聘Python工程师标准>>> Word查找栏代码通配符一览表 https://www.cnblogs.com/kevin-yuan/archive/2012/11/18/2775714.html 序号 清除使用通配符复选框 勾选使用通配符复选框 特殊字符 代码 特殊字符 代码or通配符 1 任意单个字符 ^?…

HTML5混合开发工程师行业前景分析

HTML5混合开发工程师&#xff0c;也叫Web前端开发工程师。HTML5前端是随着Web发展&#xff0c;细分出来的行业。H5混合开发工程师 &#xff0c;主要职责是利用HTML/CSS/JavaScript/DOM等各种Web技术 进行产品的界面开发。制作标准优化的代码&#xff0c;并增加交互动态功能&…