1. 二叉树是树吗?它的定义为什么是递归的? 2. 三种根序遍历主要思路是什么? 3
/*1 、前序遍历二叉树的递归算法 */
void preorder(bintree t)
{
if (t) {
printf("%c",t->data);
preorder(t->lchild);
preorder(t->rchild);
}
}
/*2 、中序遍历二叉树的递归算法 */
void inorder(bintree t)
{
if (t) {
inorder(t->lchild);
printf("%c",t->data);
inorder(t->rchild);
}
}
/*3 、后序遍历二叉树的递归算法 */
void postorder(bintree t)
{
if (t) {
postorder(t->lchild);
postorder(t->rchild);
printf("%c",t->data);
}
}
先序调用的时候,递归函数,先序函数会一直递归,直到t->next为空,即t为叶节点,需要注意的是当t->next 为空时,函数的实参没有传过去,所以t指向叶结点的父节点,更要注意的是,先序调用的递归函数还没执行完,在先序调用的最里层,要执行这个函数的最后一个语句,即先序访问右子树。
在了解递归函数时,要注意函数是一层一层执行的,把没有调用的函数看作哦是第一层,第一次调用的时候,,势必会第二次遇到调用函数,变成第二层,,,,
二叉树(Binary tree)是一种算法结构,是树形结构的一种。因为存储结构及其算法都较为简单,好理解,所以应用比较广泛。二叉树是n个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成,是有序树。当集合为空时,称该二叉树为空二叉树。在二叉树中,一个元素也称作一个结点。
递归是算法的一种,它是指一种通过重复将问题分解为同类的子问题而解决问题的方法。而二叉树从算法定义上看,或者是实际编程,3种遍历方式,都符合递归算法的特征。
二叉树递归遍历分为先序遍历、中序遍历和后序遍历。
先序遍历为:根节点+左子树+右子树
中序遍历为:左子树+根节点+右子树
后序遍历为:左子树+右子树+根节点
(你只要记住根节点在哪里就是什么遍历,且都是先左再右)
举个例子,如二叉树:
请点击输入图片描述
这棵树的先序遍历为:1 2 3 4 5
中序遍历为:2 1 4 3 5
后序遍历为:2 4 5 4 1
嬴冉贝立:[答案] 树的逻辑结构特征是:树中任一结点都可以有零个或多个直接后继(孩子)结点,但至多只能有一个直接前趋(双亲)结点.树形结构是非线性结构.二叉树是n(n≥0)个结点的有限集,它或者是空集(n=0),或者由一个根结点及两棵互不相交的分别称作...
长宁县19884032835: 二叉树一定是树吗 - ?
嬴冉贝立: 你好 不是 树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构,很象自然界中的树那样.树结构在客观世界中广泛存在,如人类社会的族谱和各种社会组织机构都可用树形象表示.树在计算机领域中也得到广泛应用,如在编译源程序如下时,可用树表示源源程序如下的语法结构.又如在数据库系统中,树型结构也是信息的重要组织形式之一.一切具有层次关系的问题都可用树来描述.满二叉树,完全二叉树,排序二叉树.参考 采纳
长宁县19884032835: 二叉树是什么意思 - ?
嬴冉贝立: 二叉树是一类非常重要的树形结构,它可以递归地定义如下:二叉树T是有限个结点的集合,它或者是空集,或者由一个根结点u以及分别称为左子树和右子树的两棵互不相交的二叉树u(1)和u(2)组成.若用n,n1和n2分别表示T,u(1)和u(2)的结点数,则有n=1+n1+n2 .u(1)和u(2)有时分别称为T的第一和第二子树.
长宁县19884032835: 什么是二叉树? - ?
嬴冉贝立: 二叉树 在计算机科学中,二叉树是每个结点最多有两个子树的有序树.通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree).二叉树常被用作二叉查找树和二叉堆. 二叉树的每个结点至多只有二棵子树(不存在度大于2的...
长宁县19884032835: 二叉树是一种特殊的树吗? - ?
嬴冉贝立: A,B都是错的,算法是有穷的;二叉树和树是完全不同的概念,不能理解为树教材上说的很清楚.树有且只有一个根结点,而二叉树可以为空.
长宁县19884032835: 什么是二叉树?二叉树拿来干什么? - ?
嬴冉贝立: 1、二叉树在图论中是这样定义的:二叉树是一个连通的无环图,并且每一个顶点的度不大于3.有根二叉树还要满足根结点的度不大于2.有了根结点之后,每个顶点定义了唯一的父结点,和最多2个子结点.然而,没有足够的信息来区分左结点...
长宁县19884032835: 数据结构 二叉树 - ?
嬴冉贝立: 先介绍一下树:1.树的定义 树是一种常见的非线性的数据结构.树的递归定义如下: 树是n(n>0)个结点的有限集,这个集合满足以下条件: ⑴有且仅有一个结点没有前件(父亲结点),该结点称为树的根; ⑵除根外,其余的每个结点都有且仅...
长宁县19884032835: 二叉树中每个结点的度不能超过2,所以二叉树是一种特殊的树.这句话是对是错为什么? - ?
嬴冉贝立:[答案] 树、二叉树两者概念不同,二叉树是有严格定义的,二叉树并非树的特例.
长宁县19884032835: 什么是二叉树?
嬴冉贝立: 这是计算机编程数据结构里的一个东西,是一种计算机数据结构, 顺序搜索加分支的.... 形象地说,就是从一个数据开始(“根”),顺序遍历一个数据库, 其中包括分支,搜索到头再回到分支处通过另一条路.... 即像树的生长一样...
长宁县19884032835: 什么是树与二叉树? - ?
嬴冉贝立: 数和二叉树都是一种非线性结构.数反应的是一对多的关系.只有一个根.二叉树不是特殊的数,仍旧只有一个根,但是度最大为2,分左右子树.