当前位置: 首页 > news >正文

温州建网站公司哪家好建立什么指标体系和评价程序规范

温州建网站公司哪家好,建立什么指标体系和评价程序规范,深圳网站设计 建设首选深圳市,线上推广员的工作内容目录 一 二叉树的遍历 1 构建一个二叉树 2 前序遍历 3 中序遍历 4 后续遍历 5 层序 6 二叉树销毁 二 应用(递归思想) 1 二叉树节点个数 2 叶子节点个数 3 第K层的节点个数 4 二叉树查找值为x的节点 5 判断是否是二叉树 一 二叉树的遍历 学习二叉树结构#xff0…目录 一 二叉树的遍历 1 构建一个二叉树 2 前序遍历 3 中序遍历 4 后续遍历 5 层序  6 二叉树销毁 二 应用(递归思想) 1 二叉树节点个数 2 叶子节点个数 3 第K层的节点个数 4 二叉树查找值为x的节点 5 判断是否是二叉树 一 二叉树的遍历 学习二叉树结构最简单的方式就是遍历。所谓二叉树遍历(Traversal)是按照某种特定的规则依次对二叉 树中的节点进行相应的操作并且每个节点只操作一次。访问结点所做的操作依赖于具体的应用问题。 遍历 是二叉树上最重要的运算之一也是二叉树上进行其它运算的基础 二叉树是 1. 空树  2. 非空根节点根节点的左子树、根节点的右子树组成的。 前序、中序以及后序遍历  按照规则二叉树的遍历有前序/中序/后序的递归结构遍历 1. 前序遍历(Preorder Traversal 亦称先序遍历)——访问根结点的操作发生在遍历其左右子树之前。 2. 中序遍历(Inorder Traversal)——访问根结点的操作发生在遍历其左右子树之中间。 3. 后序遍历(Postorder Traversal)——访问根结点的操作发生在遍历其左右子树之后。 由于被访问的结点必是某子树的根所以N(Node、L(Left subtree和R(Right subtree又可解释为 根、根的左子树和根的右子树。NLR、LNR和LRN分别又称为先根遍历、中根遍历和后根遍历。 代码实现: 1 构建一个二叉树 typedef struct BinaryTreeNode {struct BinaryTreeNode* left;struct BinaryTreeNode* right;int val; }BTNode;BTNode* BuyNode(int x) {BTNode* node (BTNode*)malloc(sizeof(BTNode));if (node NULL){perror(malloc fail);exit(-1);}node-left NULL;node-right NULL;node-val x;return node; }int main() {BTNode* node1 BuyNode(1);BTNode* node2 BuyNode(2);BTNode* node3 BuyNode(3);BTNode* node4 BuyNode(4);BTNode* node5 BuyNode(5);BTNode* node6 BuyNode(6);node1-left node2;node1-right node4;node2-left node3;node4-left node5;node4-right node6;PrevOrder(node1);printf(\n);InOrder(node1);printf(\n);PostOrder(node1);printf(\n);return 0; } 2 前序遍历 //前序遍历 void PrevOrder(BTNode* root) {if (root NULL){printf(NULL );return;}printf(%d , root-val);PrevOrder(root-left);PrevOrder(root-right); }3 中序遍历 //中序遍历 void InOrder(BTNode* root) {if (root NULL){printf(NULL );return;}InOrder(root-left);printf(%d , root-val);InOrder(root-right); } 4 后续遍历 //后序遍历 void PostOrder(BTNode* root) {if (root NULL){printf(NULL );return;}PostOrder(root-left);PostOrder(root-right);printf(%d , root-val); } 5 层序  void QueueInit(Que* pq) {assert(pq);pq-head pq-tail NULL;pq-size 0; }void QueuePush(Que* pq, QDataType x) {assert(pq);QNode* newnode (QNode*)malloc(sizeof(QNode));if (newnode NULL){perror(malloc fail);exit(-1);}newnode-next NULL;newnode-val x;if (pq-tail NULL){pq-head pq-tail newnode;}else{pq-tail-next newnode;pq-tail newnode;}pq-size;}bool QueueEmpty(Que* pq) {assert(pq);return pq-head NULL; }void QueuePop(Que* pq) {assert(pq);assert(!QueueEmpty(pq));if (pq-head-next NULL){free(pq-head);pq-head pq-tail NULL;}else{QNode* next pq-head-next;free(pq-head);pq-head next;}pq-size--; }QDataType QueueFront(Que* pq) {assert(pq);assert(!QueueEmpty(pq));return pq-head-val; }void LevelOrder(BTNode* root) {Que q;QueueInit(q);if (root){QueuePush(q, root);}while (!QueueEmpty(q)){BTNode* front QueueFront(q);printf(%d , front-val);if (front-left){QueuePush(q, front-left);}if (front-right){QueuePush(q, front-right);}QueuePop(q);} }6 二叉树销毁 //二叉树的销毁 void TreeDestroy(BTNode* root) {if (root NULL){return;}TreeDestroy(root-left);TreeDestroy(root-right);free(root);} 二 应用(递归思想) 1 二叉树节点个数 int size 0; int TreeSize(BTNode* root) {if (root NULL){return 0;}else{size;}TreeSize(root-left);TreeSize(root-right);return size;} 我们还可以改进 int TreeSize(BTNode* root) {return root NULL ? 0 : TreeSize(root-left) TreeSize(root-right) 1; } 2 叶子节点个数 int TreeLeafSize(BTNode* root) {if (root NULL){return 0;}if (root-left NULL root-right NULL){return 1;}return TreeLeafSize(root-left) TreeLeafSize(root-right); } 3 第K层的节点个数 int TreeKLevel(BTNode* root, int k) {assert(k 0);if (root NULL){return 0;}if (k 1){return 1;}return TreeKLevel(root-left, k-1) TreeKLevel(root-right, k-1); }4 二叉树查找值为x的节点 BTNode* TreeFind(BTNode* root, int x) {if (root NULL){return NULL;}if (root-val x){return root;}BTNode* ret NULL;//从左树找 找到了就返回 不找右树了ret TreeFind(root-left, x);if (ret){return ret;}//左树没找到 就开始找右树ret TreeFind(root-right, x);if (ret){return ret;}} 5 判断是否是二叉树 void QueueInit(Que* pq) {assert(pq);pq-head pq-tail NULL;pq-size 0; }void QueueDestroy(Que* pq) {assert(pq);QNode* cur pq-head;while (cur){QNode* next cur-next;free(cur);cur next;}pq-head pq-tail NULL;pq-size 0; }void QueuePush(Que* pq, QDataType x) {assert(pq);QNode* newnode (QNode*)malloc(sizeof(QNode));if (newnode NULL){perror(malloc fail);exit(-1);}newnode-next NULL;newnode-val x;if (pq-tail NULL){pq-head pq-tail newnode;}else{pq-tail-next newnode;pq-tail newnode;}pq-size;}bool QueueEmpty(Que* pq) {assert(pq);return pq-head NULL; }void QueuePop(Que* pq) {assert(pq);assert(!QueueEmpty(pq));if (pq-head-next NULL){free(pq-head);pq-head pq-tail NULL;}else{QNode* next pq-head-next;free(pq-head);pq-head next;}pq-size--; }QDataType QueueFront(Que* pq) {assert(pq);assert(!QueueEmpty(pq));return pq-head-val; }int TreeComplete(BTNode* root) {Que q;QueInit(q);if (root ! NULL){QueuePush(q, root);}//找空节点while (!QueueEmpty(q)){BTNode* front QueueFront(q);if (front NULL){break;}QueuePush(q, front-left);QueuePush(q, front-right);QueuePop(q);}//已经找到空节点while (!QueueEmpty(q)){BTNode* front QueueFront(q);QueuePop(q);if (front ! NULL){QueueDestroy(q);return false;}}QueueDestroy(q);return true; } 二叉树的链式结构的本质思想是递归, 对于递归不了解的小伙伴可以看看我之前的博客, 也可以自己尝试画一下递归展开图,下一节讲OJ题目.实战才最有效!继续加油!
http://www.yutouwan.com/news/219372/

相关文章:

  • 网站惩罚查询邯郸集团网站建设
  • 郑州网站建设搜索优化建立门户网站
  • 医院网站运营方案室内设计三维效果图
  • 太原正规的网站制作正常做网站多少钱
  • 网站图片如何做链接携程旅行网官网
  • 网站策划设计建设取消wordpress还原
  • 网站展示怎么做武进网站建设价格
  • .net做网站的方式网址seo查询
  • 网站建设的目的及定位功能wordpress图片文章
  • 单位网站建设ppt做牛仔裤的小视频网站
  • 怎样查网站备案设计师学编程能自己做网站吗
  • 郑州网站公司哪家好joomla做类似赶集网的网站
  • 深圳做外贸网站公司网页视频加速器
  • 新手做网站选材网站高速下载如何做
  • 网站建设服务费计入会计科目濮阳免费网站制作
  • 太原建站服务wordpress 导航站模板
  • 河南省建设工程监理协会网站游戏开发与网站开发哪个难
  • 做网站每天都要花钱么泉州专业网站建设公司哪家好
  • 中山专业外贸网站开发公司wordpress 漏洞利用工具
  • 上海千途建站重庆华鼎达网站建设
  • 企业网站脚本语言计算机网络技术电商网站建设与运营方向
  • wordpress没有upload深圳搜索seo优化排名
  • 在线视频播放网站开发wordpress如何设置邮箱设置
  • 赣州网站制作较好的公司移动端是什么意思
  • 建设网站多钱wordpress本地搬迁
  • 书店网站建设人员分配长春市做网站哪家好
  • 石家庄做手机网站建设服务器如何配置php网站
  • 长春网站设计公司广东seo加盟
  • 网站开发模板教务管理html简单的个人博客页面
  • 可以做图的网站东莞有什么做网站的公司