樹是n(n>=0)個(gè)節(jié)點(diǎn)的有限集,且這些節(jié)點(diǎn)滿足如下關(guān)系:
(1)有且僅有一個(gè)節(jié)點(diǎn)沒有父結(jié)點(diǎn),該節(jié)點(diǎn)稱為樹的根。
(2)除根外,其余的每個(gè)節(jié)點(diǎn)都有且僅有一個(gè)父結(jié)點(diǎn)。
(3)樹中的每一個(gè)節(jié)點(diǎn)都構(gòu)成一個(gè)以它為根的樹。
二叉樹在滿足樹的條件時(shí),滿足如下條件: 每個(gè)節(jié)點(diǎn)最多有兩個(gè)孩子(子樹),這兩個(gè)子樹有左右之分,次序不可顛倒。

二叉樹構(gòu)造
#include<stdio.h>
struct TreeNode{
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x),left(NULL),right(NULL){}
};
void preorder_print(TreeNode *node, int layer){
if(!node){
return;
}
for(int i = 0; i < layer; i++){
}
printf("{%d}\n",node->val);
preorder_print(node->left, layer + 1);//遍歷左子樹,層數(shù)+1
preorder_print(node->right, layer + 1);//遍歷右子樹,層數(shù)+1
}
int main(){
TreeNode a(1);
TreeNode b(2);
TreeNode c(5);
TreeNode d(3);
TreeNode e(4);
TreeNode f(6);
a.left = &b;
a.right = &c;
b.left = &d;
b.right = &e;
c.right = &f;
preorder_print = (&a,0);
return 0;
}
二叉樹的深度遍歷

1.前序遍歷:a(1),b(2),c(3),d(4),e(5),f(6)
2.中序遍歷:3,2,4,1,5,6
3.后續(xù)遍歷:3,4,2,6,5,1
void traversal_qian(TreeNode * node, int layer){
if(!node){
return;
}
for(int i = 0;i < layer;i++){
printf("-----");
}
printf("[%d\n]",node->val);
traversal_qian(node->left, layer +1);
traversal_qian(node->right,layer+1);
}