前序遍歷:根結點->左子樹->右子樹
中序遍歷:左子樹->根結點->右子樹
後序遍歷:左子樹->右子樹->根結點
層次遍歷:從最高層到最底層每層從左向右遍歷
例如下圖中的二叉搜尋樹
前序遍歷:8 3 1 6 4 7 10 14 13
中序遍歷:1 3 4 6 7 8 10 13 14
後序遍歷:1 4 7 6 3 13 14 10 8
層次遍歷:8 3 10 1 6 14 4 7 13
對於二叉搜尋樹,中序遍歷的結果為二叉樹中的結點值從小到大排序的結果。
struct treenode
};
遞迴版本:
void preorder(treenode* root)
非遞迴版本:
void preorder(treenode* root)
else
}}
遞迴版本:
void inorder(treenode* root)
}
非遞迴版本:
void inorder(treenode* root)
else
}}
遞迴版本:
void postorder(treenode* root)
}
非遞迴版本:
void postorder(treenode* root)
else
}}
void level(treenode* root)
if (node->right)
queue1.pop();
}}
int treedepth(treenode* root)
二叉樹幾種遍歷方式
一 基本概念 每個結點最多有兩棵子樹,左子樹和右子樹,次序不可以顛倒。性質 1 非空二叉樹的第n層上至多有2 n 1 個元素。2 深度為h的二叉樹至多有2 h 1個結點。滿二叉樹 所有終端都在同一層次,且非終端結點的度數為2。在滿二叉樹中若其深度為h,則其所包含的結點數必為2 h 1。完全二叉樹 除...
二叉樹後續遍歷的幾種方式
資料結構定義 definition for a binary tree node.public class treenode treenode int val treenode int val,treenode left,treenode right 遞迴寫法 class solution 普通迭代...
二叉樹遍歷方式
先序遍歷 根 左子樹 右子樹 遞迴版本 public static void preprint treenode root 非遞迴版本 public static void preorder treenode root if s.empty 中序遍歷 左子樹 根 右子樹 遞迴版本 public st...