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

管理网站建设哪家公司好建设通网站查询单位

管理网站建设哪家公司好,建设通网站查询单位,凡科互动小程序官网,网站设计注册怎么做1 问题 求二叉树中俩个节点的最低共同父节点#xff0c;比如二叉树如下 42 61 3 5 7 比如节点1和3两个节点的最低共同父节点是2#xff0c;节点3和5两个节点的最低共同父节点是4,节点5和6两个节点的最低共同父节点是6, 也有可能其中1个节点或者2个节点不…1 问题 求二叉树中俩个节点的最低共同父节点比如二叉树如下 42         61     3   5     7 比如节点1和3两个节点的最低共同父节点是2节点3和5两个节点的最低共同父节点是4,节点5和6两个节点的最低共同父节点是6, 也有可能其中1个节点或者2个节点不在二叉树里面那么他们就没有最低共同父节点。 2 分析 42         61     3   5     7 比如我们求节点1和3两个节点的最低共同父节点我们保存每个根节点到该节点的最短路径节点值比如节点1的路径就是4-2-1 然后节点3的路径是4-2-3,然后我们再把这个保存的2个路径依次从尾巴进行进行比较然后就能获取两个节点的最低共同父节点值。 3 代码实现 #include iostream #include vector #include stdlib.husing namespace std;typedef struct Tree {int value;struct Tree* left;struct Tree* right;Tree(int value) : value(value), left(NULL), right(NULL) {} } Tree;class CommonParentNode { public:bool hasPath(Tree* head, Tree* node, std::vectorTree * vector){if (head NULL)return false;///先把我们的遍历节点保存到vector里面去vector.push_back(head);if (head node)return true;//如果这样写只能说明子递归return值了但是这个函数没有返回值。if (head-left ! NULL hasPath(head-left, node, vector))return true;if (head-right ! NULL hasPath(head-right, node, vector))return true;//这里一定要调用pop_back函数如果这个节点的左右子节点都为空或者左子树或者右子树里面不包含这个我们的节点//这个节点就要弹出来如果没有这个函数那么我们的vector里面保存的先序遍历到这个节点的所有节点值//而不是根节点到这个节点的最短距离。vector.pop_back();return false;}Tree* getCommmonParent(Tree* node, Tree* node1, Tree* node2){if (node NULL || node1 NULL || node2 NULL){std::cout node NULL || node1 NULL || node2 NULL std::endl;return NULL;}vectorTree * vector1;vectorTree * vector2;bool result1 hasPath(node, node1, vector1);if (!result1)return NULL;bool result2 hasPath(node, node2, vector2);if (!result2)return NULL;//我们vector依次保存的是从头结点到该节点的路径我们遍历的时候应该从vector的尾巴开始遍历,注释的遍历错了要注意// for (int i 0; i vector1.size(); i)// {// for (int j 0; j vector2.size(); j)// {// //if (vector1[i]-value vector2[j]-value)// if (vector1[i] vector2[j])// {// std::cout common parent node value is vector1[i]-value std::endl;// return vector1[i];// }// }// } for (int i vector1.size() - 1; i 0; --i){for (int j vector2.size() - 1; j 0; --j){//if (vector1[i]-value vector2[j]-value)if (vector1[i] vector2[j]){return vector1[i];}}} return NULL; } };int main() {Tree *node1 , *node2 , *node3, *node4, *node5, *node6, *node7, *node8;node1 (Tree *)malloc(sizeof(Tree));node2 (Tree *)malloc(sizeof(Tree));node3 (Tree *)malloc(sizeof(Tree));node4 (Tree *)malloc(sizeof(Tree));node5 (Tree *)malloc(sizeof(Tree));node6 (Tree *)malloc(sizeof(Tree));node7 (Tree *)malloc(sizeof(Tree)); node8 (Tree *)malloc(sizeof(Tree)); node1-value 4;node2-value 2;node3-value 6;node4-value 1;node5-value 3;node6-value 5;node7-value 7;node8-value 8;node1-left node2;node1-right node3;node2-left node4;node2-right node5;node3-left node6;node3-right node7;node4-left NULL;node4-right NULL;node5-left NULL;node5-right NULL;node6-left NULL;node6-right NULL;node7-left NULL;node7-right NULL;/*** 42 61 3 5 7 **/CommonParentNode commonParentNode;Tree *commonTreeNode NULL;commonTreeNode commonParentNode.getCommmonParent(node1, node5, node7);if (!commonTreeNode){std::cout the two node do not find commonTreeNode std::endl;return -1;}std::cout commonTreeNode parent node value is commonTreeNode-value std::endl;return 0; } 4 运行结果 commonTreeNode parent node value is 4 5 总结 这个题目的思路是保存根节点到每个节点中途最短路径父节点值然后进行比较同时我们应该可以知道求根节点到该节点最短路径的每个节点值就是vector里面保存的每个节点同时也知道根节点到该节点的高度值也就是这个vecter里面保存数据的大小既vector.size()函数的值代码和上面部分代码一样。 bool hasPath(Tree* head, Tree* node, std::vectorTree * vector){if (head NULL)return false;///先把我们的遍历节点保存到vector里面去vector.push_back(head);if (head node)return true;//如果这样写只能说明子递归return值了但是这个函数没有返回值。if (head-left ! NULL hasPath(head-left, node, vector))return true;if (head-right ! NULL hasPath(head-right, node, vector))return true;//这里一定要调用pop_back函数如果这个节点的左右子节点都为空或者左子树或者右子树里面不包含这个我们的节点//这个节点就要弹出来如果没有这个函数那么我们的vector里面保存的先序遍历到这个节点的所有节点值//而不是根节点到这个节点的最短距离。vector.pop_back();return false;} 很经典的代码。
http://www.sadfv.cn/news/359658/

相关文章:

  • 网站开发小工具网站权重下降原因
  • 中小网站建设都有哪些方案网站倒计时
  • 显示网站正在维护是什么情况wordpress订阅插件
  • 个人怎么做淘宝客网站吗做汽车介绍视频的网站
  • 界面软件开发工具淄博网站建设优化珍云
  • 企业查询网站有哪些wordpress 输出缩略图
  • 如何用网站模板如何做自己的网站系统
  • 高端网站制作系统阿里云服务器做盗版视频网站吗
  • 做旅游网站推广可以免费做兼职的网站有哪些
  • 个人简约网站模板做网站 能挣钱吗
  • 云主机网站源码网站的流量是怎么回事
  • 厦门网站公司企业安全文化建设的步骤
  • 自己做头像的网站外贸网站支付接口
  • 长春专业做网站的公司排名重庆市建设工程信息网官网工程押证
  • 企业门户网站建设的意义传统门户网站有哪些
  • 成都培训学校网站建设安徽建站
  • 商城型网站建设代理加盟怎么做网站建设销售
  • 用python语言做网站discuz轻社区模板
  • html做网站步骤手机网站怎么写
  • 自己做内部网站网络品牌营销方案
  • 太原百度seo网站建设宁波seo优化报价多少
  • 常熟做网站的社交网站怎么制作
  • 怎么做网站记者网站网站代理怎么做的
  • 网站建设项目功能需求分析报告开发公司成本管控
  • 做网站的 书籍营销型网站建设的好处
  • 定西市小企业网站建设建设推荐广州微信网站建设
  • 微网站怎么用明年做那个网站致富
  • 教育培训网站建设ppt心理咨询网站
  • 衡水市网站建设嘉兴网站建设全包
  • 广州哪家网站建设服务好长沙县工程建设质监站网站