二叉樹遍歷方式彙總

2021-10-07 12:26:03 字數 1297 閱讀 1895

#include using namespace std;

struct bitreenode

};bitreenode* init_tree(vector& nums)

else

}return root;

}void pre_order_r(bitreenode* root)

void in_order_r(bitreenode* root)

void post_order_r(bitreenode* root)

void level_order(bitreenode* root)

}void pre_order_n1(bitreenode* root)

if (!s.empty())

}}void in_order_n1(bitreenode* root)

if (!s.empty())

}}void post_order_n1(bitreenode* root)

if (!s.empty()) }}

}void dfs(bitreenode* root)

}int main();

bitreenode* root = init_tree(nums);

cout << "遞迴先序遍歷" << endl;

pre_order_r(root);

cout << endl;

cout << "遞迴中序遍歷" << endl;

in_order_r(root);

cout << endl;

cout << "遞迴後序遍歷" << endl;

post_order_r(root);

cout << endl;

cout << "層次遍歷" << endl;

level_order(root);

cout << endl;

cout << "非遞迴先序遍歷" << endl;

pre_order_n1(root);

cout << endl;

cout << "非遞迴中序遍歷" << endl;

in_order_n1(root);

cout << endl;

cout << "非遞迴後序遍歷" << endl;

post_order_n1(root);

cout << endl;

cout << "二叉樹dfs先序遍歷" << endl;

dfs(root);

cout << endl;

}

二叉樹遍歷方式

先序遍歷 根 左子樹 右子樹 遞迴版本 public static void preprint treenode root 非遞迴版本 public static void preorder treenode root if s.empty 中序遍歷 左子樹 根 右子樹 遞迴版本 public st...

二叉樹幾種遍歷方式

一 基本概念 每個結點最多有兩棵子樹,左子樹和右子樹,次序不可以顛倒。性質 1 非空二叉樹的第n層上至多有2 n 1 個元素。2 深度為h的二叉樹至多有2 h 1個結點。滿二叉樹 所有終端都在同一層次,且非終端結點的度數為2。在滿二叉樹中若其深度為h,則其所包含的結點數必為2 h 1。完全二叉樹 除...

構建二叉樹 遍歷二叉樹

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