樹的前序 中序 後序遍歷

2021-08-09 09:18:24 字數 681 閱讀 7177

樹的前序、中序、後序遍歷 遞迴方法:

ab    c

樹的結構定義:

struct treenode; 

typedef treenode* node;

typedef int eletype;

struct treenode;

(1) 前序遍歷

先序遍歷,就是從上到下,從左到右,遇到乙個就遍歷,上面這個例子遍歷的序列就是:a b c

遞迴**如下:

void preordertree(node node) 

}

(2) 中序遍歷

中序遍歷的序列:b a c 其實中序遍歷就是先從左到右,來遍歷,先找到最左的,然後找到,它的右孩子,沒有的話再找父親,輸出,最後輸出右兄弟。

void inordertree(node node) 

}

(3) 後序遍歷

後序遍歷的序列:a c b 其實後序遍歷就是把中序遍歷的父親在它右兄弟輸出後再輸出。

void afterpreordertree(node node) 

}

前序 中序 後序遍歷

先序遍歷也叫做 先根遍歷 前序遍歷,可記做根左右 二叉樹父結點向下先左後右 首先訪問根結點然後遍歷左子樹,最後遍歷右子樹。在遍歷左 右子樹時,仍然先訪問根結點,然後遍歷左子樹,最後遍歷右子樹,如果二叉樹為空則返回。例如,下圖所示二叉樹的遍歷結果是 abdecf 中序遍歷首先遍歷左子樹,然後訪問根結點...

前序中序後序遍歷

一道hulu的筆試題 how i wish yesterday once more 假設有棵樹,長下面這個樣子,它的前序遍歷,中序遍歷,後續遍歷都很容易知道。preorder gdafemhz inorder adefghmz postorder aefdhzmg 現在,假設僅僅知道前序和中序遍歷,...

樹的前序遍歷 中序遍歷 後序遍歷詳解

圖1對於當前節點,先輸出該節點,然後輸出他的左孩子,最後輸出他的右孩子。以上圖為例,遞迴的過程如下 1 輸出 1,接著左孩子 2 輸出 2,接著左孩子 3 輸出 4,左孩子為空,再接著右孩子 4 輸出 6,左孩子為空,再接著右孩子 5 輸出 7,左右孩子都為空,此時 2 的左子樹全部輸出,2 的右子...