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

php企业网站开发方案网站建站网站设计

php企业网站开发方案,网站建站网站设计,百度信息流推广平台,网站建设而上回我们手撕了一棵二叉树,并且通过递归完成了遍历,这回我们将深入理解用递归解决相关的二叉树问题,数量使用分治的思想. 上回的代码: #includestdio.h #includestdlib.h typedef struct BinTreeNode {struct BinTreeNode* left;struct BinTreeNode* right;i…上回我们手撕了一棵二叉树,并且通过递归完成了遍历,这回我们将深入理解用递归解决相关的二叉树问题,数量使用分治的思想. 上回的代码: #includestdio.h #includestdlib.h typedef struct BinTreeNode {struct BinTreeNode* left;struct BinTreeNode* right;int val; }BTNode; BTNode* BuyBTNode(int val) {BTNode* newnode (BTNode*)malloc(sizeof(BTNode));if (newnode NULL){perror(malloc fail);return NULL;}newnode-val val;newnode-left NULL;newnode-right NULL;return newnode; } BTNode* CreateTree() {BTNode* n1 BuyBTNode(1);BTNode* n2 BuyBTNode(2);BTNode* n3 BuyBTNode(3);BTNode* n4 BuyBTNode(4);BTNode* n5 BuyBTNode(5);BTNode* n6 BuyBTNode(6);n1-left n2;n1-right n4;n2-left n3;n4-left n5;n4-right n6;return n1; } void PreOrder(BTNode* root) {if (root NULL){printf(N );return;}printf(%d , root-val);PreOrder(root-left);PreOrder(root-right); }void InOrder(BTNode* root) {if (root NULL){printf(N );return;}InOrder(root-left);printf(%d , root-val);InOrder(root-right); } void PostOrder(BTNode* root) {if (root NULL){printf(N );return;}PostOrder(root-left);PostOrder(root-right);printf(%d , root-val); }int main() {BTNode* root CreateTree();printf(前序遍历:);PreOrder(root);printf(\n);printf(中序遍历:);InOrder(root);printf(\n);printf(后序遍历:);PostOrder(root);printf(\n);return 0; } 一、求二叉树存储的元素个数 这里我的思路很简单我们可以通过递归将二叉树向左右孩子遍历不为空则加1. 代码如下 int TreeSize(BTNode* root) {return root NULL ? 0 : TreeSize(root-left) TreeSize(root-right) 1; } 二、二叉树的最大深度 这个思路整体也不难我们一样用递归左右孩子节点每通过一个非0的节点加1NULL则直接返回然后左右节点的返回值比较最后返回大的值。 代码如下 int maxDepth(BTNode* root) {if (root NULL)return 0;int leftDepth maxDepth(root-left);int rightDepth maxDepth(root-right);return leftDepth rightDepth ? leftDepth 1 : rightDepth 1; } 三、寻找X的所在的节点 这个就是在左右递归上加上判断val是否等于X 代码示例 BTNode* TreeFind(BTNode* root, int x) {if (root NULL)return NULL;if (root-val x)return root;BTNode* ret1 TreeFind(root-left, x);if (ret1)return ret1;BTNode* ret2 TreeFind(root-right, x);if (ret2)return ret2;return NULL; } 四、单值二叉树 965. 单值二叉树 - 力扣LeetCode bool isUnivalTree(struct TreeNode* root) {if(rootNULL)return true;if (root-left) {if (root-val ! root-left-val || !isUnivalTree(root-left)) {return false;}}if (root-right) {if (root-val ! root-right-val || !isUnivalTree(root-right)) {return false;}}return true; } 运用递归判断只要存在一个false最后结果必然false 五、相同的树 100. 相同的树 - 力扣LeetCode bool isSameTree(struct TreeNode* p, struct TreeNode* q) {if(p NULL q NULL)return true;if(p NULL || q NULL)return false;if(p-val ! q-val)return false;return isSameTree(p-left,q-left) isSameTree(p-right,q-right); } 这题思路和上题差不多,排除特殊情况就行。 六、对称二叉树 101. 对称二叉树 - 力扣LeetCode bool judge(struct TreeNode *p ,struct TreeNode *q){if(p NULL q NULL){return true;}else if(p NULL || q NULL){return false;}else if(p - val ! q - val){return false;}return judge(p - left,q - right) judge(p - right,q - left); } bool isSymmetric(struct TreeNode* root){return judge(root - left,root - right); }这题思路和上题也大差不差,我把递归内容拉出来了而已 希望这篇学习之后大家能学会这种分治的思想谢谢阅读。
http://www.w-s-a.com/news/159415/

相关文章:

  • 响应式网站介绍页面模板功能找不到
  • 公司网站如何seo自己做资讯网站
  • 天津网站建设软件开发招聘企业信用信息查询公示系统上海
  • 网站备案中做正品的网站
  • 网站建设0基础学起青海企业网站开发定制
  • 网站定制项目上海快速建站
  • 大型视频网站建设方案东莞企业网站建设开发
  • 西安php网站制作可以用AI做网站上的图吗
  • 网站开发工程师和前端企业网络推广公司
  • 泉州开发网站的公司有哪些电脑网页翻译
  • 河北省建设机械会网站首页刚做的网站怎么收录
  • 什么网站专门做自由行的framework7做网站
  • 网页设计与网站建设书籍包头住房与城乡建设局网站
  • 重庆网站建设平台免费猎头公司收费收费标准和方式
  • 形象设计公司网站建设方案书打开一个不良网站提示创建成功
  • 网站手机页面如何做网站关键字 优帮云
  • 免费的黄冈网站有哪些下载软件系统软件主要包括网页制作软件
  • 企业微站系统重庆高端网站建设价格
  • 有没有做衣服的网站吗网站自适应开发
  • 青海省制作网站专业专业定制网吧桌椅
  • 网站开发的项目17岁高清免费观看完整版
  • 手机网站建设多少钱一个门网站源码
  • 重庆 网站开发天津住房和城乡建设厅官方网站
  • 泰安高级网站建设推广厦门高端网站建设定制
  • jsp网站开发引用文献手机seo排名
  • 创建一家网站如何创设计网页的快捷网站
  • 1688代加工官方网站h5开发教程
  • 静态网站源码下载网站怎么显示备案号
  • 网站代码设计网站开发维护任职要求
  • 长寿做网站的电话怎么快速刷排名