S5_笔记(树,二叉树)
“ Ctrl AC!一起 AC!”
目录
树的引子
概述
树与生活
查找概述
顺序查找
二分查找
树
树的概述
树的基本术语
树的表示
二叉树
概念及形态
二叉树的性质
二叉树的抽象数据类型
二叉树的储存结构
顺序存储:
链表存储:
二叉树的遍历
1.先序的递归遍历:
2.中序的递归遍历:
3.后序的递归遍历:
4.中序非递归遍历:
5.先序的非递归遍历:
6.后序的非递归遍历:
7.层序遍历:
树的应用实例
1.找叶子结点:
2.求树的高度:
3.二元运算:
4.三序知二序确定唯一树
树的引子
概述
树与生活
查找概述
顺序查找
二分查找
二分模板(更多模板见More model)
树
树的概述
树的基本术语
树的表示
二叉树
概念及形态
二叉树的性质
二叉树的抽象数据类型
二叉树的储存结构
顺序存储:
链表存储:
链表存储的代码描述:
typedef struct TreeNode* BinTree;
struct TreeNode{ElementType Data;BinTree Left;BinTree Right;
}
二叉树的遍历
1.先序的递归遍历:
代码描述:
void PreOrderTraversal(BinTree BT){if(BT){printf("%d",BT->Data);PreOrderTraversal(BT->Left);PreOrderTraversal(BT->Right);}
}
2.中序的递归遍历:
代码描述:
void PreOrderTraversal(BinTree BT){if(BT){PreOrderTraversal(BT->Left);printf("%d",BT->Data);PreOrderTraversal(BT->Right);}
}
3.后序的递归遍历:
代码描述:
void PreOrderTraversal(BinTree BT){if(BT){PreOrderTraversal(BT->Left);PreOrderTraversal(BT->Right);printf("%d",BT->Data);}
}
4.中序非递归遍历:
代码描述:
void InOrderTraversal(BinTree BT){BinTree T=BT;Stack S=CreatStack(MaxSize);while(T||!IsEmpty(S)){while(T){Push(S,T);T=T->Left;}if(!IsEmpty(S)){T=Pop(S);printf("%5d",T->Data);T=T->Right;}}
}
5.先序的非递归遍历:
void InOrderTraversal(BinTree BT){BinTree T=BT;Stack S=CreatStack(MaxSize);while(T||!IsEmpty(S)){while(T){printf("%5d",T->Data);Push(S,T);T=T->Left;}if(!IsEmpty(S)){T=Pop(S);T=T->Right;}}
}
6.后序的非递归遍历:
void Post_order(tree L){tree p=L;Stack s=CreateStack(MaxSize);Stack result=CreateStack(MaxSize);while(p||!IsEmpty(s)){while(p){push(s,p);push(result,p); p=p->right;}if(!IsEmpty(s)){p=pop(s);p=p->left;}}while(!IsEmpty(result)){p=pop(result);printf("%5d",p->data);}
}
7.层序遍历:
代码描述:
void LevelOrderTraversal(BinTree BT){Queue Q; BinTree T;if(!BT) return;Q=CreatQueue(MaxSize);AddQ(Q,BT);While(!IsEmptyQ(Q)){T=DeleteQ(Q);printf("%d\n",T->Data);if(T->Left) AddQ(Q,T->Left);if(T->Right) AddQ(Q,T->Right);}
}
树的应用实例
1.找叶子结点:
2.求树的高度:
3.二元运算:
4.三序知二序确定唯一树
根据前中序或中后序遍历情况可求的唯一确定的二叉树。
感谢阅读!!!
“ Ctrl AC!一起 AC!”
S5_笔记(树,二叉树)相关推荐
- 数据结构笔记6: 二叉树和其他树
树的一般定义 树 线性表.表:不适合描述层次结构数据 树(tree):是一个非空的有限元素的集合,其中有一个特殊的元素称为根,余下的元素组成树的若干子树 递归的思想:每棵树=根+若干棵子树,每棵子树= ...
- 清华大学邓俊辉-数据结构MOOC笔记-树的概念及逻辑表示
清华大学邓俊辉-数据结构MOOC笔记-树的概念及逻辑表示 有关概念: 与图论略有不同,数据结构中的树:1.需要为每一颗树指定一个特殊的顶点,作为"根"(root),对应rooted ...
- 《大话数据结构》读书笔记-树
写在前面:本文仅供个人学习使用.<大话数据结构>通俗易懂,适合整体做笔记输出,构建体系.并且文中很多图片来源于该书,如有侵权,请联系删除. 文章目录 6.2 树的定义 6.2.1 结点分类 ...
- 树-二叉树、满二叉树和完全二叉树
树-二叉树.满二叉树和完全二叉树 二叉树的定义: (1)当n=0时,为空树: (2)当n>0时,是由一个根结点和称为根结点的左.右子树构成,并且两颗子树互不相交. 满二叉树: 对于一棵二叉树,如 ...
- java二叉树转换为链表_leetcode刷题笔记-114. 二叉树展开为链表(java实现)
leetcode刷题笔记-114. 二叉树展开为链表(java实现) 题目描述 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 rig ...
- 数据结构树二叉树计算节点_查找二叉树中叶节点的数量 数据结构
数据结构树二叉树计算节点 Algorithm: 算法: One of the popular traversal techniques to solve this kind of problems i ...
- 二叉查找(排序)树/二叉树----建树,遍历
二叉查找(排序)树/二叉树----建树,遍历 import java.util.ArrayList; import java.util.LinkedList; import java.util.Lis ...
- 数据结构c语言版二叉树的顺序存储表示,数据结构(十一) -- C语言版 -- 树 - 二叉树基本概念...
内容预览 零.读前说明一.二叉树相关概念1.1.定义1.2.性质1.3.满二叉树与完全二叉树1.3.1.满二叉树1.3.2.完全二叉树1.3.3.特点延伸 二.二叉树储存结构2.1.顺序结构存储2.2 ...
- 数据结构(十一) -- C语言版 -- 树 - 二叉树基本概念
内容预览 零.读前说明 一.二叉树相关概念 1.1.定义 1.2.性质 1.3.满二叉树与完全二叉树 1.3.1.满二叉树 1.3.2.完全二叉树 1.3.3.特点延伸 二.二叉树储存结构 2.1.顺 ...
- java 二叉树 红黑树_常见数据结构(二)-树(二叉树,红黑树,B树)
常见数据结构(二)-树(二叉树,红黑树,B树) 标签: algorithms [TOC] 本文介绍数据结构中几种常见的树:二分查找树,2-3树,红黑树,B树 写在前面 本文所有图片均截图自course ...
最新文章
- js if for 详解 获取元素方式 及一些js 基础知识
- 顶尖科技棋牌游戏开发_如何接受顶尖科技公司的采访
- Leetcode--16. 最接近的三数之和
- Go 语言本身提供的包管理机制
- 转载:AD的授权还原和主还原:深入浅出Active Directory系列(六)
- Sonar+Hudson+Maven构建系列之三:安装Hudson
- lvuaagentinstbaseroot_桌面小助手UniAgent删除指南
- C# 绘制CIE1931彩色马蹄形图大家自己斟酌
- android 水晶报表,水晶报表分组,统计,求和,sum()函数使用
- 个人作业--数组之首尾相连
- Ble低功耗蓝牙和蓝牙mesh网络之间的关系
- 组合投资的风险与收益概述
- 论文笔记:图像分割——ExFuse DFN
- python中str函数用法_python中str内置函数用法总结
- 微生物组-宏基因组分析专题研讨会(2022.8)
- 国威电话交换机如何设置加拨17909IP功能
- 儿童节到了!让 GitHub 上这几个小游戏帮你找回童真吧!
- Netty使用FileUpload报错Not represented by a file
- 你知道 Compiler 与 Interpreter 的区别吗?
- 英语软件那些好玩的功能你知道吗