using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DataList.Scrips.Tree
{
//相同数据类型的数据元素的有限集合
//1.有且仅有一个特殊的节点,叫跟节点,根节点没有前驱节点
//2.除根节点外,其余节点被分为n个互不相交的节点,每个节点本身又是一棵树,这课树称为子树
//3.树种的节点,除根节点外,其他的节点都有且仅有一个前驱节点,有零个或者多个后驱节点
//节点:树中的元素,由数据项和数据之间的关系组成(node(data,lchild,rchild))
//节点的度:节点所拥有的子树的个数
//树的度:树中各节点度的最大值
//叶子节点:度为零的节点,也叫终端节点
//节点的层:节点的深度+1
//节点的深度:从节点开始到节点的最大边数
//节点的高度:从叶子节点开始到节点的最大边数
//二叉树的存储方式:数组存储(2*i,2*i+1),二叉链表存储(链式存储)
//俩种特殊的二叉树:满二叉树(叶子节点在最后一层,其余节点都是有左右俩个孩子),完全二叉树(叶子节点在倒数第二层不满,或者最后一层只有左孩子)
//二叉树的遍历:前序遍历,中序遍历,后续遍历
//代码实现二叉树
/// <summary>
/// 节点类
/// </summary>
/// <typeparam name="T"></typeparam>
public class TreeNode<T>
{
/// <summary>
/// 节点类三个成员,数据,左孩子,右孩子
/// </summary>
public T data;
public TreeNode<T> lChild;
public TreeNode<T> rChild;
/// <summary>
/// 节点构造器
/// </summary>
/// <param name="_data"></param>
public TreeNode(T _data)
{
data = _data;
lChild = null;
rChild = null;
}
/// <summary>
/// 节点构造器
/// </summary>
/// <param name="_data"></param>
public TreeNode(TreeNode<T> _lchild,TreeNode<T> _rchild)
{
data = default(T);
lChild = _lchild;
rChild = _rchild;
}
/// <summary>
/// 节点构造器
/// </summary>
/// <param name="_data"></param>
public TreeNode(T _data, TreeNode<T> _lchild, TreeNode<T> _rchild)
{
data = _data;
lChild = _lchild;
rChild = _rchild;
}
/// <summary>
树结构
最新推荐文章于 2022-03-18 12:26:21 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)