二叉树的序号和索引区别
二叉树的顺序存储代码
我用的是List表,只要是线性表就都能实现二叉树
public class Tree<T> : MonoBehaviour
{
private List<T> bitTree = new List<T>();
//添加顺序存储方法
public void AddTree(T[] values){
for(int i = 0; i < values.Length; i++){
bitTree.Add(values[i]);
}
}
}
二叉树的前中后序遍历代码
前序特点:
就是先当前节点(如果从根节点开始),再左节点再右节点
中序特点:
先左,再当前,最后右
后序特点:
先左,再右,最后当前
//顺序遍历二叉树
//前序
public void Preorder(int index)
{
if (index >= bitTree.Count)
return;
Debug.Log(bitTree[index]);
int LeftNode = 2*index+1;
int RightNode = 2*index+2;
Preorder(LeftNode);
Preorder(RightNode);
}
//中序
public void MiddleOrder(int index)
{
if (index >= bitTree.Count)
return;
int LeftNode = 2 * index + 1;
int RightNode = 2 * index + 2;
MiddleOrder(LeftNode);
Debug.Log(bitTree[index]);
MiddleOrder(RightNode);
}
//后序
public void AfterOrder(int index) {
if (index >= bitTree.Count)
return;
int LeftNode = 2 * index + 1;
int RightNode = 2 * index + 2;
AfterOrder(LeftNode);
AfterOrder(RightNode);
Debug.Log(bitTree[index]);
}