#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 最後乙個父節...