二叉树链式存储中的四种遍历方法

  1. void InorderTraversal( BinTree BT )
  2. {
  3.     if( BT ) {
  4.         InorderTraversal( BT->Left );
  5.         /* 此处假设对BT结点的访问就是打印数据 */
  6.         printf("%d ", BT->Data); /* 假设数据为整型 */
  7.         InorderTraversal( BT->Right );
  8.     }
  9. }
  10.  
  11. void PreorderTraversal( BinTree BT )
  12. {
  13.     if( BT ) {
  14.         printf("%d ", BT->Data );
  15.         PreorderTraversal( BT->Left );
  16.         PreorderTraversal( BT->Right );
  17.     }
  18. }
  19.  
  20. void PostorderTraversal( BinTree BT )
  21. {
  22.     if( BT ) {
  23.         PostorderTraversal( BT->Left );
  24.         PostorderTraversal( BT->Right );
  25.         printf("%d ", BT->Data);
  26.     }
  27. }
  28.  
  29. void LevelorderTraversal ( BinTree BT )
  30.     Queue Q; 
  31.     BinTree T;
  32.  
  33.     if ( !BT ) return/* 若是空树则直接返回 */
  34.      
  35.     Q = CreatQueue(); /* 创建空队列Q */
  36.     AddQ( Q, BT );
  37.     while ( !IsEmpty(Q) ) {
  38.         T = DeleteQ( Q );
  39.         printf("%d ", T->Data); /* 访问取出队列的结点 */
  40.         if ( T->Left )   AddQ( Q, T->Left );
  41.         if ( T->Right )  AddQ( Q, T->Right );
  42.     }
  43. }

猜你喜欢

转载自www.cnblogs.com/lzdxh027/p/11323534.html