博客
关于我
数据结构 二叉树有遍历的想法
阅读量:502 次
发布时间:2019-03-07

本文共 2478 字,大约阅读时间需要 8 分钟。

#include 
#include
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];
for (int 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 (int 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;
}

转载地址:http://ncccz.baihongyu.com/

你可能感兴趣的文章
Objective-C实现knight Tour骑士之旅算法(附完整源码)
查看>>
Objective-C实现KnightTour骑士巡回赛问题算法(附完整源码)
查看>>
Objective-C实现KNN算法(附完整源码)
查看>>
Objective-C实现KNN算法(附完整源码)
查看>>
Objective-C实现KNN算法(附完整源码)
查看>>
Objective-C实现knuth morris pratt(KMP)算法(附完整源码)
查看>>
Objective-C实现knuth-morris-pratt(KMP)算法(附完整源码)
查看>>
Objective-C实现Koch snowflake科赫雪花曲线算法(附完整源码)
查看>>
Objective-C实现koch snowflake科赫雪花算法(附完整源码)
查看>>
Objective-C实现KPCA(附完整源码)
查看>>
Objective-C实现KruskalMST最小生成树的算法(附完整源码)
查看>>
Objective-C实现kruskal克鲁斯卡尔算法(附完整源码)
查看>>
Objective-C实现kth order statistick阶统计量算法(附完整源码)
查看>>
Objective-C实现lamberts ellipsoidal distance朗伯椭球距离算法(附完整源码)
查看>>
Objective-C实现largest AdjacentNumber最大相邻数算法 (附完整源码)
查看>>
Objective-C实现largest subarray sum最大子数组和算法(附完整源码)
查看>>
Objective-C实现largestPrime最大素数的算法 (附完整源码)
查看>>
Objective-C实现lazy segment tree惰性段树算法(附完整源码)
查看>>
Objective-C实现LBP特征提取(附完整源码)
查看>>
Objective-C实现LDPC码(附完整源码)
查看>>