樹的遞迴和非遞迴遍歷

2021-09-27 05:55:40 字數 632 閱讀 5809

利用迴圈和棧實現前序、中序和後序遍歷、利用佇列實現層次遍歷

typedef struct node

bitree;

stacks;

前序遍歷

//針對乙個根結點,先輸出其根結點值,再push其所有左結點,然後再彈出乙個結點取其右結點作為新的根結點。

void preorder(bitree *t)//前序遍歷的非遞迴演算法

if(!s.empty())//當左孩子遍歷完後,取棧頂,找右孩子。此時迴圈還沒有結束,再遍歷它的左孩子,直至孩子全部遍歷結束。

}printf("\n");

}中序遍歷

void inorder(bitree *t)//中序遍歷的非遞迴演算法

if(!s.empty())//左孩子入棧結束,取棧頂,輸出棧頂元素,遍歷右孩子

}printf("\n");

}後序遍歷

void postorder(bitree *root)

else

}printf("\n");

}層次遍歷

void levelorder(bitree *root)//層次遍歷的非遞迴演算法

}printf("\n");

}

樹的遍歷遞迴非遞迴

1先序 遞迴 class solution public void b list list,treenode tree 非遞迴 class solution else return list 2中序 遞迴 class solution public void b list list,treenode...

樹的遞迴與非遞迴遍歷

樹的遞迴遍歷 建立一棵用二叉鍊錶方式儲存的二叉樹,並對其進行遍歷 先序 中序和後序 將遍歷序列輸出到顯示器上。基本要求 從鍵盤輸入一棵二叉樹的先序序列,以二叉鍊錶作為儲存結構,建立二叉樹並對其進行遍歷 先序 中序和後序 然後將遍歷結果列印輸出。要求編寫遞迴和非遞迴兩種演算法來實現。測試資料 輸入序列...

樹的非遞迴遍歷

在vs2011版本中除錯通過。include stdafx.h include stack.h include 標準庫中定義的棧 includeusing namespace std define max len 15 void create tree treenode head,char pdat...