理論基礎 二叉樹 二叉樹的遍歷

2021-09-24 06:04:11 字數 861 閱讀 3167

以二叉鍊錶的儲存結構為例

若二叉樹為空,則空操作,否則:先訪問根結點,再先序遍歷左子樹,然後先序遍歷右子樹

void preorder(node *bt)

}

若二叉樹為空,則空操作,否則:先中序遍歷左子樹,再訪問根結點,然後中序遍歷右子樹

void inorder(node *bt)

}

若二叉樹為空,則空操作,否則:先後序遍歷左子樹,再後序遍歷右子樹,然後訪問根結點

void postorder(node *bt)

}

從根結點開始,首先將根結點入隊,然後從隊首取出乙個元素,訪問該指標所指的結點,若該指標所指的結點左、右孩子非空,則將其左孩子指標、右孩子指標入隊,重複上述操作,直至隊列為空。

void levelorder(node *root)

}

以二叉鍊錶的儲存結構為例

void preorder(node *root) 

if(!s.empty())

}}

void inorder(node *root)

if(!s.empty())

}}

借助棧,遇到乙個結點,把它推入棧中,遍歷它的左子樹,左子樹遍歷結束後,還不能馬上訪問處於棧頂的該結點,而是要再按照它的右鏈結結構指示的位址去遍歷該結點的右子樹,遍歷遍右子樹後才能從棧頂托出該結點並訪問。

void postorder(node *root) 

else

}}

理論基礎 二叉樹 二叉鍊錶

二叉樹一般採用二叉鍊錶儲存,其基本思想是 令二叉樹的每個結點對應乙個鍊錶結點,鍊錶結點除了存放與二叉樹結點有關的資料資訊外,還要設定指示左右孩子的指標。templatestruct node 如圖,乙個二叉鍊錶的儲存結構如下 templateclass bitree 前序遍歷 void inorde...

構建二叉樹 遍歷二叉樹

陣列法構建二叉樹 public class main public static void main string args 用陣列的方式構建二叉樹 public static void createbintree 把linkedlist集合轉成二叉樹的形式 for int j 0 j 最後乙個父節...

二叉樹 二叉樹

題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹...