C# 二叉树_顺序存储结构的四种遍历方式

76 阅读1分钟

二叉树_顺序存储结构的四种遍历方式

  • 先序遍历

    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();
            }