二叉樹的建立及三種遍歷方式詳解
阿新 • • 發佈:2018-11-25
建立一個如下圖所示的二叉樹
程式如下:
#include<stdio.h> #include<stdlib.h> //定義二叉樹 typedef struct _tree_node { char date; struct tree_node *lchild;//左節點 struct tree_node *rchild;//右節點 }tree_node; //建立二叉樹 tree_node *create_tree_node(tree_node *new_node) { char date = '0'; scanf("%c", &date); if(date == '0') { new_node = NULL; return new_node; } else { new_node = (tree_node *)malloc(sizeof(tree_node)); memset(new_node, 0, sizeof(new_node)); new_node->date = date; new_node->lchild = create_tree_node(new_node->lchild); new_node->rchild = create_tree_node(new_node->rchild); return new_node; } } //先序遍歷:跟左右 void pre_traver(tree_node *node) { if(!node) { return; } else { printf("%c\n", node->date);//跟 pre_traver(node->lchild);//左 pre_traver(node->rchild);//右 } } //中序遍歷:左跟右 void in_order_traver(tree_node *node) { if(!node) return; else { in_order_traver(node->lchild);//左 printf("%c\n", node->date);//跟 in_order_traver(node->rchild);//右 } } //後序遍歷:左右跟 void post_order_traver(tree_node *node) { if(!node) return; else { post_order_traver(node->lchild);//左 post_order_traver(node->rchild);//右 printf("%c\n", node->date);//跟 } } int main() { tree_node *root; root = create_tree_node(root); printf("pre_traver\n"); pre_traver(root); printf("in_order_traver\n"); in_order_traver(root); printf("post_order_traver\n"); post_order_traver(root); }
程式執行時按照如下方式輸入:
ea0cb00d00f0hg000
程式執行結果如下: