树是n(n>=0)个节点的有限集,且这些节点满足如下关系: (1)有且仅有一个节点没有父结点,该节点称为树的根。 (2)除根外,其余的每个节点都有且仅有一个父结点。 (3)树中的每一个节点都构成一个以它为根的树。 二叉树在满足树的条件时,满足如下条件: 每个节点最多有两个孩子(子树),这两个子树有左右之分,次序不可颠倒。
#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);//遍历左子树,层数+1
preorder_print(node->right, layer + 1);//遍历右子树,层数+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.后续遍历: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);
}