中国最大的摄影网站,找外包做网站要多久,栖霞建设采购网站,做电影网站模板教学目录 1.实现的接口1.1通过前序遍历的数组ABD##E#H##CF##G##构建二叉树 1.2 二叉树销毁1.3二叉树节点个数1.4二叉树第k层节点个数1.5 二叉树查找值为x的节点1.6二叉树前序遍历1.7二叉树中序遍历1.8二叉树后序遍历1.9层序遍历1.10判断二叉树是否是完全二叉树1.11 二叉… 目录 1.实现的接口1.1通过前序遍历的数组ABD##E#H##CF##G##构建二叉树 1.2 二叉树销毁1.3二叉树节点个数1.4二叉树第k层节点个数1.5 二叉树查找值为x的节点1.6二叉树前序遍历1.7二叉树中序遍历1.8二叉树后序遍历1.9层序遍历1.10判断二叉树是否是完全二叉树1.11 二叉树叶子节点个数 1.实现的接口
1.1通过前序遍历的数组ABD##E#H##CF##G##构建二叉树
// 通过前序遍历的数组ABD##E#H##CF##G##构建二叉树 BTNode* BinaryTreeCreate(BTDataType* a, int n, int* pi); if (a[*pi] # || (*pi) n)
{(*pi);return NULL;
}
BTNode* root (BTNode*)malloc(sizeof(BTNode));
root-_data a[*pi];
(*pi);
root-_left BinaryTreeCreate(a, n, pi);
root-_right BinaryTreeCreate(a, n, pi);
return root;
1.2 二叉树销毁
// 二叉树销毁 void BinaryTreeDestory(BTNode** root);
void BinaryTreeDestory(BTNode* root)
{if (root NULL)return;BinaryTreeDestory(root-_left);BinaryTreeDestory(root-_right);free(root);
}
1.3二叉树节点个数
// 二叉树节点个数 int BinaryTreeSize(BTNode* root); int BinaryTreeSize(BTNode* root)
{if (root NULL)return 0;static size 0;size;BinaryTreeSize(root-_left);BinaryTreeSize(root-_right);return size;}1.4二叉树第k层节点个数
// 二叉树第k层节点个数 int BinaryTreeLevelKSize(BTNode* root, int k); int BinaryTreeLevelKSize(BTNode* root, int k)
{if (root NULL)return 0;if (k 1)return 1;return BinaryTreeLevelKSize(root-_left, k - 1) BinaryTreeLevelKSize(root-_right, k - 1);}
1.5 二叉树查找值为x的节点
// 二叉树查找值为x的节点 BTNode* BinaryTreeFind(BTNode* root, BTDataType x);
BTNode* BinaryTreeFind(BTNode* root, BTDataType x)
{if (root NULL)return NULL;if (root-_data x)return root;BTNode* left BinaryTreeFind(root-_left, x);if (left)return left;BTNode*right BinaryTreeFind(root-_right, x);if (right)return right;
}
1.6二叉树前序遍历
// 二叉树前序遍历 void BinaryTreePrevOrder(BTNode* root);
void BinaryTreePrevOrder(BTNode* root)
{if (root NULL)return;printf(%c , root-_data);BinaryTreePrevOrder(root-_left);BinaryTreePrevOrder(root-_right);
}1.7二叉树中序遍历
// 二叉树中序遍历 void BinaryTreeInOrder(BTNode* root);
void BinaryTreeInOrder(BTNode* root)
{BinaryTreeInOrder(root-_left);printf(%c , root-_data);BinaryTreeInOrder(root-_right);}1.8二叉树后序遍历
// 二叉树后序遍历 void BinaryTreePostOrder(BTNode* root); void BinaryTreePostOrder(BTNode* root)
{BinaryTreePostOrder(root-_left);BinaryTreePostOrder(root-_right);printf(%c , root-_data);
}1.9层序遍历
// 层序遍历 void BinaryTreeLevelOrder(BTNode* root);
void BinaryTreeLevelOrder(BTNode* root)
{Queue q;QueueInit(q);if (root)QueuePush(q, root);while (!QueueEmpty(q)){BTNode* nodeQueueFrontdata(q);printf(%c , node-_data);QueuePop(q);if (node-_left){QueuePush(q, node-_left);}if (node-_right){QueuePush(q, node-_right);}}}
1.10判断二叉树是否是完全二叉树
// 判断二叉树是否是完全二叉树 int BinaryTreeComplete(BTNode* root); int BinaryTreeComplete(BTNode* root)
{Queue q;QueueInit(q);if (root)QueuePush(q, root);while (!QueueEmpty(q)){BTNode* tmp QueueFrontdata(q);QueuePop(q);if (tmp NULL)break;QueuePush(q, tmp-_left);QueuePush(q, tmp-_right);}while (!QueueEmpty(q)){if (QueueFrontdata(q) ! NULL){QueueDestory(q);return false;}QueuePop(q);}QueueDestory(q);return true;
}
1.11 二叉树叶子节点个数
// 二叉树叶子节点个数 int BinaryTreeLeafSize(BTNode* root);
int BinaryTreeLeafSize(BTNode* root)
{if (root NULL)return 0;if (root-_left NULL root-_right NULL)return 1;return BinaryTreeLeafSize(root-_left) BinaryTreeLeafSize(root-_right);}
结尾今天的分享到此结束喜欢的朋友如果感觉有帮助可以点赞三连支持咱们共同进步!