生活随笔
收集整理的這篇文章主要介紹了
数据结构——二叉树的双序遍历
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
設計二叉樹的雙序遍歷算法(雙序遍歷是指對于二叉樹的每一個結點來說,先訪問這個結
點,再按雙序遍歷它的左子樹,然后再一次訪問這個結點,接下來按雙序遍歷它的右子樹
思路:
1.雙序遍歷與中序遍歷類似,是中序遍歷的變形
2.中序遍歷是指對于二叉樹的每一個結點來說,先中序遍歷這個結
點的左子樹,然后訪問這個結點,接下來中序遍歷它的右子樹
二叉樹的雙序遍歷的全部代碼
#include<stdio.h>
#include<stdlib.h>
typedef char ElemType
;
typedef int status
;
typedef struct BiTNode
{ElemType data
;struct BiTNode
*lchild
;struct BiTNode
*rchild
;
}BiNode
,*BiTree
; void create_BiTree(BiTree
&T
)
{ElemType ch
;scanf("%c",&ch
);if(ch
=='#')T
=NULL;else{T
=(BiTree
)malloc(sizeof(BiNode
));if(!T
)exit(-1);T
->data
=ch
;create_BiTree(T
->lchild
);create_BiTree(T
->rchild
);}
}void CreateBiTree(BiTree
&T
)
{ElemType ch
;scanf("%c",&ch
);if(ch
=='#')T
=NULL;else {T
=(BiNode
*)malloc(sizeof(BiNode
));if(!T
)exit(-1);T
->data
=ch
;CreateBiTree(T
->lchild
);CreateBiTree(T
->rchild
);}
}
void double_preorderTraverse(BiTree T
)
{if(T
!=NULL){printf("%c ",T
->data
);double_preorderTraverse(T
->lchild
);printf("%c ",T
->data
);double_preorderTraverse(T
->rchild
);}
}int main()
{BiTree T
;printf("創建樹輸入樹T的先序序列(其中使用#代表空節點)\n");create_BiTree(T
);printf("雙序遍歷:");double_preorderTraverse(T
);
}
例子:
運行結果:
總結
以上是生活随笔為你收集整理的数据结构——二叉树的双序遍历的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。