二叉树_顺序存储结构的四种遍历方式
-
先序遍历
private void FirstTraversal(int index) { if (index >= count) return; //index大于数据个数时 //得到要遍历的结点的编号 int number = index + 1; if(data[index].Equals(-1)) return; Console.Write(data[index] + " "); //得到左子结点的编号 int leftNumber = number * 2; //得到右子结点的编号 int rightNumber = number * 2 + 1; //递归调用 FirstTraversal(leftNumber - 1); FirstTraversal(rightNumber - 1); } -
中序遍历
private void MiddleTraversal(int index) { if(index >= count) return; //得到要遍历结点的编号 int number = index + 1; if(data[index].Equals(-1)) return; int leftNumber = number * 2; int rightNumber = number * 2 + 1; MiddleTraversal(leftNumber - 1); Console.Write(data[index] + " "); MiddleTraversal(rightNumber - 1); } -
后序遍历
private void lastTraversal(int index) { if(index >= count) return; int number = index + 1; if (data[index].Equals(-1)) return; int leftNumber = number * 2; int rightNumber = number * 2 + 1; //先遍历左边 lastTraversal(leftNumber - 1); //再遍历右边 lastTraversal(rightNumber -1 ); Console.Write(data[index] + " "); } -
层序遍历
public void LayerTraversal() { for (int i = 0; i < count; i++) { if(data[i].Equals(-1)) continue; Console.Write(data[i] + " "); } Console.WriteLine(); }