用C语言读取前序建立二叉树
来源:互联网 发布:淘宝客怎么采集 编辑:程序博客网 时间:2024/06/05 03:32
今天做编译原理的由正则表达式生成最小DFA需要用到二叉树结构。于是回顾了一下二叉树的建立。
今天很惨,我记得以前对于二叉树的建立很熟很熟,并且我还赞叹过利用前序建立树的巧妙。可是今天当我想前序建立树时,却死活建不出来!我只记得了这几步:
if(ch=='#')
{
p=NULL;
return ;
}
p->value=ch;
creatTree(p->lnode);
creatTree(p->rnode);
先介绍一下前序建立二叉树的思想。如图1所示的二叉树
其中除‘#’以外的节点是真实的二叉树,也就是需要我们构造的二叉树。现在将每个叶子节点的空子节点用‘#’节点填充,我们姑且称之为#扩展二叉树。然后写出#扩展二叉树的前序遍历:ab#d##c##,这便是我们程序的输入。程序思想是,遇到‘#’便将p赋NULL,如果不是‘#’,就malloc(sizeof(Treenode)),将值赋予Treenode,然后creatTree(p->lnode);creatTree(rnode);
以下为生成树代码段(注:有误!!)
我在函数形参前加了取址符号&,表示我引用了实参。
也就是说,我传入的是指向这个变量存储位置的指针,函数可以通过这个指针修改实参的值,所以我对加了引用的形参修改便修改了实参的值。
重点在于,指针变量也是变量,如果要在函数中想要使对于形参的值修改对应到实参的值修改,必须加引用&。
关于利用中序、后序建立二叉树的方法,改日再探索。
- 用C语言读取前序建立二叉树
- 已知前序、中序,递归建立二叉树(C语言)
- 前序建立二叉树
- c语言实现二叉树的建立与前序、中序、后序、层序遍历
- 【c语言】构建二叉树并前序遍历
- 类似前序遍历 建立二叉树
- 二叉树的前序建立方式
- 二叉树建立及前序遍历
- 前序遍历建立二叉树
- 用c语言编程实现二叉树的建立和遍历二叉树
- 根据前序和中序建立二叉树
- 前序,中序序列建立二叉树
- 二叉树的前序递归建立的详解
- 二叉树的建立和前序遍历
- 根据前序遍历和后续遍历建立二叉树
- 数叶子节点(前序建立二叉树)
- C++二叉树的前序建立与前中后遍历
- 二叉树的层次建立方式(C语言)
- eclipse maven 安装、配置
- 监控系统资源
- 我这8年的编程生活-展望篇
- String字符串查找操作
- Device or resource busy
- 用C语言读取前序建立二叉树
- JDBC基础_建立连接
- 学习网站
- Hough变换
- JAVA 容器(四)---HashSet的实现原理(一)
- 使用U盘制作linux启动盘,并且成功安装Linux系统后,拔掉无法再次启动linux,修复引导区到硬盘
- OSX终端 命令行的一些基本操作
- __STL_TRY和__STL_UNWIND这两个宏的意思
- Ubuntu 10.04架设VPN