数据结构(树和二叉树的转换与遍历)
2017-11-16 16:08
323 查看
二叉树的遍历
先序遍历(DLR):先遍历根节点,再遍历左子树,最后遍历右子树
遍历结果:ABDHIEJCFG
public void PreOrder(Node<T> root) { if (root==null) { return; } Console.WriteLine(root.Data); PreOrder(root.LChild); PreOrder(root.RChild); }
中序遍历(LDR):先遍历左子树,再遍历根节点,最后遍历右子树
遍历结果:HDIBJEAFCG
public void InOrder(Node<T> root) { if (root == null) { return; } InOrder(root.LChild); Console.WriteLine(root.Data); InOrder(root.RChild); }
后序遍历(LRD):先遍历左子树,再遍历右子树,最后遍历根节点
遍历结果:HIDJEBFGCA
public void PostOrder(Node<T> root) { if (root == null) { return; } PostOrder(root.LChild); PostOrder(root.RChild); Console.WriteLine(root.Data); }
层序遍历:从上到下,从左到右进行遍历
遍历结果:ABCDEFGHIJ
public void LevelOrder(Node<T> root) { Queue<Node<T>> myQueue=new Queue<Node<T>>(); myQueue.Enqueue(root); while (myQueue.Count!=0) { Node<T> temp=myQueue.Dequeue(); Console.WriteLine(temp.Data); if (temp.LChild!=null) { myQueue.Enqueue(temp.LChild); } if (temp.RChild!=null) { myQueue.Enqueue(temp.RChild); } } }
树和二叉树的转换
树转换成二叉树1>加线:就是在所有兄弟之间加一条线
2>抹线:就是对书中的每个节点,只保留他与第一个孩子之间的线,删除他与其他孩子之间的连线
3>旋转:就是以树的根节点为轴心,将整棵树顺时针旋转一定角度,使之结构层次分明
森林转换为二叉树
1>先把每棵树转换为二叉树
2>第一课二叉树不动,从第二棵二叉树开始一次吧后一棵二叉树的根节点作为前一棵二叉树的根节点的有孩子结点,用线连接起来。
二叉树转换为树:
1>若某结点的左孩子结点存在,将左孩子结点的右孩子结点、右孩子结点的右孩子结点……都作为该结点的孩子结点,将该结点与这些右孩子结点用线连接起来;
2>删除原二叉树中所有结点与其右孩子结点的连线;
3>整理(1)和(2)两步得到的树,使之结构层次分明。
二叉树转换为森林:
1>先把每个结点与右孩子结点的连线删除,得到分离的二叉树;
2>把分离后的每棵二叉树转换为树;
3>整理第(2)步得到的树,使之规范,这样得到森林。
树和森林的遍历
树的遍历
先序遍历:先遍历根节点,之后遍历每颗子树
遍历结果:ABEFGCHDIJ
后序遍历:先遍历每颗字数,之后遍历根节点
遍历结果:EFGBHCIJDA
森林的遍历
先序遍历:依次先序遍历每一棵树
遍历结果:ABCDEFGHJI
中序遍历:依次后序遍历每一棵树
遍历结果:BCDAFEJHIG
相关文章推荐
- Python数据结构之二叉树(涵盖了构建、删除、查找、字典转换、非递归与递归遍历等)
- 数据结构_二叉树的先序建立与先序,中序,后序(递归)遍历方式_C语言源代码
- 数据结构-二叉树的存储结构和遍历算法(四)
- 数据结构:二叉树(前,中,后,层次)非递归遍历。
- 数据结构-二叉树的遍历
- 【数据结构】二叉树的递归与非递归创建和遍历
- 数据结构——二叉树的遍历问题(C语言)
- 数据结构-3 二叉树的遍历
- 数据结构----二叉树(1)遍历,建立,应用
- 输入一组整数后用c语言数据结构对其进行大小比较以二叉树存储、遍历
- 数据结构-二叉树的三种遍历
- 【算法与数据结构】二叉树的 中序 遍历
- 【数据结构】二叉树的层次遍历2
- (C语言)二叉树非递归遍历前序和中序(数据结构十四)
- C++数据结构--二叉树的建立,前序遍历,中序遍历和后序遍历
- 数据结构--二叉树--中序非递归遍历二叉树(链式结构)
- 数据结构--二叉树--层次遍历二叉树(顺序遍历)
- 数据结构之二叉树的递归创建、递归遍历
- [C++]数据结构:链表二叉树的创建与四种遍历方式
- 数据结构_树_二叉树的建立、遍历、复制与移除_二叉链表存储_C++实现