树及树的遍历

转载 2015年11月20日 23:02:07

这里写图片描述

http://www.cnblogs.com/yc_sunniwell/archive/2010/06/27/1766233.html八、树(Tree)
树,顾名思义,长得像一棵树,不过通常我们画成一棵倒过来的树,根在上,叶在下。不说那么多了,图一看就懂:

当然了,引入了树之后,就不得不引入树的一些概念,这些概念我照样尽量用图,谁会记那么多文字?

树这种结构还可以表示成下面这种方式,可见树用来描述包含关系是很不错的,但这种包含关系不得出现交叉重叠区域,否则就不能用树描述了,看图:

面试的时候我们经常被考到的是一种叫“二叉树”的结构,二叉树当然也是树的一种了,它的特点是除了叶以外的节点都有两个子,图:

由此我们还可以推出“三叉树”:

当然还有“四叉树”,“五叉树”,“六叉树”……但太难画了,节点太多,略过。
九、树的遍历(Traversal)
值得再提一下的是二叉树,因为它确实比较特别,节点有两个子,这两个子是有左右之分的,颠倒一下左右,就是不一样的二叉树了,所以左右是不能随便颠倒的。

在第三篇讲到“队”的时候,提及到了广度优先遍历(Breadth-first traversal),除了广度优先遍历之外,还有深度优先遍历(Depth-first Traversal),深度优先遍历又可分为:前序遍历(Preorder Traversal),后序遍历(Postorder Traversal)和中序遍历(Inorder Traversal),其中中序遍历只有对二叉树才有意义,下图解释这几种遍历:

好了,又到代码阶段,写点代码。我看过许多数据结构的教材,二叉树遍历都是必不可少的内容,而且我知道的全部都是用递归实现的,现在,我要求你不用递归,实现对二叉树的中序遍历。怎么办?我给个提示:广度优先遍历时候我们用了队,中序遍历,我们使用。看看能不能写出来,我也来写:

include

树以及树的遍历和搜索

普通树的定义、数据结构表示,树的前序、后序、中序遍历的递归和非递归算法实现,树的深度搜索和广度搜索算法实现....
  • whucyl
  • whucyl
  • 2013年11月12日 20:29
  • 2922

[算法学习]树的广度遍历

问题描述: 从上层向下层遍历,从左向右打印出一棵树 。 解法与分析: 广度遍历,按照从左向右的方式,我们可以使用队列来保存每一层的结点,每次结点出队,将出队结点的子结点入队,直至队列为空...
  • KesarChen
  • KesarChen
  • 2016年02月18日 13:35
  • 5791

【数据结构和算法】全面剖析树的各类遍历方法

面试中常考到树的前序,中序,后序和层序遍历,这篇博文就带你深度剖析一下二叉树的各类遍历算法的实现二叉树的遍历主要有四种,前序、中序、后序和层序遍历的实现方式主要是:递归和非递归递归遍历的实现非常容易,...
  • terence1212
  • terence1212
  • 2016年08月11日 15:10
  • 6740

树的遍历及相关题目

1.结构定义public class BinaryTreeNode { char val; BinaryTreeNode left; BinaryTreeNode right;...
  • jiangxishidayuan
  • jiangxishidayuan
  • 2016年04月12日 21:06
  • 246

数据结构——树的遍历

原文地址:Tree Traversals 不像线性数据结构(数组,列表,队列,堆栈等),它们在逻辑上只有一种遍历方式,树可以有不同的遍历方式。下面就是遍历树的一般所用的方法: 深度优先遍历: ...
  • sinat_36246371
  • sinat_36246371
  • 2016年11月26日 15:08
  • 480

根据树遍历序列求解树结构

华电北风吹 日期:2015/9/8 本文从二叉树的三种遍历方式中选择两种遍历方式,讨论怎么还原出二叉树的完整结构。树遍历基础知识: 1) 前序遍历:根节点+左子树+右子树 2) 中序遍历:左子树...
  • zhangzhengyi03539
  • zhangzhengyi03539
  • 2015年09月08日 22:00
  • 881

树的三种遍历方法代码实现 (数据结构)C语言

树的三种遍历方法:前序,中序和后序。 如何用栈实现递三种遍历树的算法             1)前序遍历             a)递归方式:                  ...
  • printf88
  • printf88
  • 2017年10月11日 12:32
  • 300

树的基本概念和遍历规则

树的递归定义 树是n(n>0)个结点的有限集,这个集合满足以下条件:       ⑴有且仅有一个结点没有前驱(父亲结点),该结点称为树的根;       ⑵除根外,其余的每个结点都有且仅有一个前驱; ...
  • BOYxiejunBOY
  • BOYxiejunBOY
  • 2015年07月21日 12:00
  • 1900

B-树的插入和遍历

B-树是一种平衡的多叉树,一颗M阶(M>2)的B树,是一颗平衡的M路平衡搜索树,可以是空树或者满足下列性质: 1. 根节点至少有两个孩子 2. 每个非根节点有[ [M/2],M]个孩子 3. 每个非根...
  • no_name_sky
  • no_name_sky
  • 2017年05月08日 14:21
  • 539

PATL2-006. 树的遍历

用的是递归的思想,找到每一层的根节点,然后进行建树。最后用个bfs将这个树输出 AC代码: /* *********************************************** A...
  • sinat_30126425
  • sinat_30126425
  • 2016年07月11日 21:11
  • 1164
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:树及树的遍历
举报原因:
原因补充:

(最多只允许输入30个字)