#include<iostream>
#include<stdlib.h>
using namespace std
;
#define LEN 30
typedef struct TreeNode
{
int data
;
TreeNode
*LChild
;
TreeNode
*RChild
;
}TreeNode
;
TreeNode
*init(int *init_arr
,int lens
){
TreeNode
*TreeArr
[LEN
];
int i
;
for(i
=0;i
<lens
;i
++){
if(init_arr
[i
]!=0){
TreeArr
[i
]=(TreeNode
*)malloc(sizeof(TreeNode
));
TreeArr
[i
]->data
=init_arr
[i
];
TreeArr
[i
]->LChild
=NULL;
TreeArr
[i
]->RChild
=NULL;
}else TreeArr
[i
]=NULL;
}
int len
=lens
/2;
for(i
=0;i
<len
;i
++){
if(TreeArr
[i
]!=NULL){
TreeArr
[i
]->LChild
=TreeArr
[2*i
+1];
TreeArr
[i
]->RChild
=TreeArr
[2*i
+2];
}
}
return TreeArr
[0];
}
void PreOrder(TreeNode
*head
){
if(head
!=NULL){
cout
<<head
->data
<<" ";
PreOrder(head
->LChild
);
PreOrder(head
->RChild
);
}
}
void InOrder(TreeNode
*head
){
if(head
!=NULL){
InOrder(head
->LChild
);
cout
<<head
->data
<<" ";
InOrder(head
->RChild
);
}
}
void PostOrder(TreeNode
*head
){
if(head
!=NULL){
PostOrder(head
->LChild
);
PostOrder(head
->RChild
);
cout
<<head
->data
<<" ";
}
}
void print_leaf_node(TreeNode
*root
){
if(root
!=NULL){
if(root
->LChild
==NULL&&root
->RChild
==NULL)cout
<<root
->data
<<" ";
print_leaf_node(root
->LChild
);
print_leaf_node(root
->RChild
);
}
}
int Leaf_count
=0;
void leaf_num1(TreeNode
*root
){
if(root
!=NULL){
leaf_num1(root
->LChild
);
leaf_num1(root
->RChild
);
if(root
->LChild
==NULL&&root
->RChild
==NULL)Leaf_count
++;
}
}
int leaf_num2(TreeNode
*root
){
if(root
==NULL){
return 0;
}else if(root
->LChild
==NULL&&root
->RChild
==NULL){
return 1;
}else{
return (leaf_num2(root
->LChild
)+leaf_num2(root
->RChild
));
}
}
int depth
=0;
void Pre_tree_depth(TreeNode
* head
, int h
){
if(head
!=NULL){
if(h
>depth
)depth
=h
;
Pre_tree_depth(head
->LChild
,h
+1);
Pre_tree_depth(head
->RChild
,h
+1);
}
}
int main(int argc
, char const *argv
[])
{
TreeNode
*head
=(TreeNode
*)malloc(sizeof(TreeNode
));
int init_arr
[]={1,2,3,0,4,0,5};
head
=init(init_arr
,7);
PreOrder(head
);
cout
<<endl
;
return 0;
}
转载请注明原文地址: https://lol.8miu.com/read-37282.html