C语言实现链式二叉树静态创建,(先序遍历),(中序遍历),(后续遍历)
#include <stdio.h>
#include <stdlib.h>
struct BTNode
{
char data ;
struct BTNode * pLchild ;
struct BTNode * pRchild ;
} ;
struct BTNode * creatBTree(void);
void PreTraverseBTree(struct BTNode * pT) ;
int main()
{
struct BTNode * pT= creatBTree();
//PreTraverseBTree(pT);
// InTraverseBTree(pT);
PostTraverseBTree(pT);
return 0 ;
}
struct BTNode * creatBTree(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 ;
}
//先序遍历
void PreTraverseBTree(struct BTNode * pT)
{
if(pT!=NULL)
{
printf("%c\n",pT->data);
if(pT->pLchild!=NULL)
{
PreTraverseBTree(pT->pLchild);
}
if(pT->pRchild!=NULL)
{
PreTraverseBTree(pT->pRchild);
}
}
/*
先访问跟节点
再先序访问左子树
再先序访问右子树*/
}
//中序遍历
void InTraverseBTree(struct BTNode * pT)
{
if(pT!=NULL)
{
if(pT->pLchild!=NULL)
{
InTraverseBTree(pT->pLchild);
}
printf("%c\n",pT->data);
if(pT->pRchild!=NULL)
{
InTraverseBTree(pT->pRchild);
}
}
/*
先中序访问左子树
再访问跟节点
再中序访问右子树*/
}
//后序遍历
void PostTraverseBTree(struct BTNode * pT)
{
if(pT!=NULL)
{
if(pT->pLchild!=NULL)
{
PostTraverseBTree(pT->pLchild);
}
if(pT->pRchild!=NULL)
{
PostTraverseBTree(pT->pRchild);
}
printf("%c\n",pT->data);
}
/*
先后序访问左子树
再后序访问右子树
再访问跟节点*/
}
C语言实现链式二叉树静态创建,(先序遍历),(中序遍历),(后续遍历)的更多相关文章
- 链式二叉树的实现(Java)
定义树节点: package 链式二叉树; public class TreeNode { private Object data; private TreeNode left; private Tr ...
- C语言实现链式队列
链式队列,简称"链队列",即使用链表实现的队列存储结构. 链式队列的实现思想同顺序队列类似,只需创建两个指针(命名为 top 和 rear)分别指向链表中队列的队头元素和队尾元素, ...
- UVa 122 Trees on the level(链式二叉树的建立和层次遍历)
题目链接: https://cn.vjudge.net/problem/UVA-122 /* 问题 给出每个节点的权值和路线,输出该二叉树的层次遍历序列. 解题思路 根据输入构建链式二叉树,再用广度优 ...
- Javascript、C#、php、asp、python 等语言的链式操作的实现
一.什么是链式操作 把需要的下一步操作的对象通过上一步操作返回回来.使完成某些功能具有持续性. 二.链式操作优点 代码更精简优雅.链式操作能大大精简代码量,多项操作一行代码一气呵成,搞定: 链式操作应 ...
- c++实现二叉树的非递归创建以及非递归先序、中序、后序遍历
二叉树的创建 思路:数组中从上到下依次放着二叉树中的元素,使用递归很容易实现,那么这里使用容器来存放之前的状态实现循环创建二叉树. TreeNode* createTree(int *arr, int ...
- 剑指offer——已知二叉树的先序和中序排列,重构二叉树
这是剑指offer中关于二叉树重构的一道题.题目原型为: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2, ...
- 【算法】二叉树、N叉树先序、中序、后序、BFS、DFS遍历的递归和迭代实现记录(Java版)
本文总结了刷LeetCode过程中,有关树的遍历的相关代码实现,包括了二叉树.N叉树先序.中序.后序.BFS.DFS遍历的递归和迭代实现.这也是解决树的遍历问题的固定套路. 一.二叉树的先序.中序.后 ...
- [LeetCode] Construct Binary Tree from Preorder and Inorder Traversal 由先序和中序遍历建立二叉树
Given preorder and inorder traversal of a tree, construct the binary tree. Note:You may assume that ...
- JAVA下实现二叉树的先序、中序、后序、层序遍历(递归和循环)
import java.util.HashMap; import java.util.LinkedList; import java.util.Map; import java.util.Queue; ...
随机推荐
- k8s系列---k8s认证及serviceaccount、RBAC
http://blog.itpub.net/28916011/viewspace-2215100/ 对作者文章有点改动 注意kubeadm创建的k8s集群里面的认证key是有有效期的,这是一个大坑!! ...
- Linux高级系统恢复技术
一,MBR毁坏: 查看系统分区在那: 毁坏MBR: 如果没有重启动,可以直接恢复: 如果重启之后就不可启动系统,需要恢复系统: 出现这样的情况: force off关机,使用光盘启动,添加一个镜像光盘 ...
- git rm -r --cached解决已提交的文件在.gitignore中加入忽略后无效的问题。
有时候,发现有不该提交的文件已经提交后,仅仅在.gitignore中加入忽略是不行的.这个时候需要执行: git rm -r --cached 文件/文件夹名字 去掉已经托管的文件,然后重新提交: g ...
- linux入门系列15--文件传输之vsftp服务
前面的系列文章基本讲完了linux管理相关的基础知识,从本篇开始讲解centos7中服务程序的部署和配置,以便为外部提供各种服务. 日常工作和娱乐中,我们所需的各种资源都离不开网络以及各种服务,我们通 ...
- sublime3 快捷键总结
配置环境:win7 sublime3 1,快速html5模板页(已安装Emmet插件) 输入html:5后,然后 ctrl+e 2,快速复制 ctrl+shift+d 复制光标所在当前行 3,向上/向 ...
- string的基本操作
在C++中,string 可以来定义一个字符串,用之前得调用下相应的库 #include<string> . 可以不用初始化字符串容量大小,系统会根据后续的赋值自动安排其容量大 ...
- C# 四则运算及省市选择及日月选择
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- java设计模式学习笔记——里氏替换原则
oo中的继承性的思考和说明 1.继承包含这样一层含义:父类中凡是已经实现好的方法,实际上是在设定规范和契约,虽然它不强制要求所有的子类必须遵循这些七月,但是如果子类对这些已经实现的方法任意修改,就会对 ...
- MySQL索引优化深入
创建 test 测试表 CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `c1` varchar(10) DEFAULT N ...
- scons自动化构建工具
方式一 可以官方下载,安装使用 方式二 使用 RT-Thread env工具,其中集成了scons工具 env工具配置 打开设置 添加到右键菜单 使用scons生成mdk5工程 > scons ...