/*二叉樹的遍歷*/
#include #include #include using namespace std;
typedef struct node
bintree;
typedef struct node1
btnode;
void creatbintree1(bintree* &root) //前序遍歷建立樹,形如 a,b,c,#,#,d,#,#,e,#,#
}void creatbintree2(char *s,bintree *&root) //建立二叉樹,s為形如a(b,c(d,e))形式的字串
if(root->rchild!=null)
}}void preorder1(bintree *root) //遞迴前序遍歷
}void inorder1(bintree *root) //遞迴中序遍歷
}void postorder1(bintree *root) //遞迴後序遍歷
}void preorder2(bintree *root) //非遞迴前序遍歷
if(!s.empty())
}}void inorder2(bintree *root) //非遞迴中序遍歷
if(!s.empty())
}}void postorder2(bintree *root) //非遞迴後序遍歷
if(!s.empty())
else //第二次出現在棧頂}}
}void postorder3(bintree *root) //非遞迴後序遍歷
else
}}int main(int argc, char *argv)
{ char s[100];
while(scanf("%s",s)==1)
{bintree *root=(bintree *)malloc(sizeof(bintree));
creatbintree2(s,root);
display(root);
cout<
二叉樹幾種遍歷方式
一 基本概念 每個結點最多有兩棵子樹,左子樹和右子樹,次序不可以顛倒。性質 1 非空二叉樹的第n層上至多有2 n 1 個元素。2 深度為h的二叉樹至多有2 h 1個結點。滿二叉樹 所有終端都在同一層次,且非終端結點的度數為2。在滿二叉樹中若其深度為h,則其所包含的結點數必為2 h 1。完全二叉樹 除...
二叉樹遍歷演算法
二叉樹是一種非線性的資料結構,在對它進行操作時,總是需要逐一對每個資料元素實施操作,這樣就存在乙個操作順序問題,由此提出了二叉樹的遍歷操作。所謂遍歷二叉樹就是按某種順序訪問二叉樹中的每個結點一次且僅一次的過程。這裡的訪問可以是輸出 比較 更新 檢視元素內容等等各種操作。在這裡寫了個二叉樹遍歷演算法 ...
廣度遍歷二叉樹和深度遍歷二叉樹演算法
二叉樹演算法基本和遞迴有關,前中後序演算法就不提了,主要看一下深度優先遍歷和廣度優先遍歷。實現這2種遍歷需要借助棧或者佇列來儲存中間結果,原因是遍歷過程出現了回溯。1 筆試題 廣度遍歷二叉樹 深度遍歷二叉樹 23 include4 include5 include6 7using namespace...