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

毕设做网站太简单/网站建设的流程及步骤

毕设做网站太简单,网站建设的流程及步骤,建没工程信息网,网站是什么公司做的最近公共祖先问题: 情况1:二叉树是个二叉查找树,且root和两个节点的值(a, b)已知。 如果该二叉树是二叉查找树,那么求解LCA十分简单。 基本思想为:从树根开始,该节点的值为t,如果t大于t1和t2…

最近公共祖先问题:
情况1:二叉树是个二叉查找树,且root和两个节点的值(a, b)已知。

如果该二叉树是二叉查找树,那么求解LCA十分简单。

基本思想为:从树根开始,该节点的值为t,如果t大于t1和t2,说明t1和t2都位于t的左侧,所以它们的共同祖先必定在t的左子树中,从t.left开始搜索;如果t小于t1和t2,说明t1和t2都位于t的右侧,那么从t.right开始搜索;如果t1<=t<= t2,说明t1和t2位于t的两侧(或t=t1,或t=t2),那么该节点t为公共祖先。
代码如下:

#include<iostream>
#include<string>
using namespace std;
struct BinaryTree
{int value;struct BinaryTree *pLeft,*pRight;
};
BinaryTree * createSearchTree(int a[],int lo,int hi)//创建二叉搜索树,基于二叉查找算法
{
//  int lo = 0,hi = n-1;BinaryTree *p = NULL;if (lo < hi){int mid = (lo+hi)/2;p = (BinaryTree *)malloc(sizeof(BinaryTree));p->value = a[mid];p->pLeft = createSearchTree(a,lo,mid-1);p->pRight = createSearchTree(a,mid+1,hi);}return p;
}
BinaryTree *lca(BinaryTree *p,int value1,int value2)//lca算法
{BinaryTree *pNode = p;while (pNode != NULL){if (pNode->value > value1 && pNode->value > value2)pNode = pNode->pLeft;else if (pNode->value < value1 && pNode->value pNode = pNode->pRight;else{return pNode;}}return NULL;
}
int main()
{int a[] = {1,2,3,4,5,6};BinaryTree *p = createSearchTree(a,0,5);BinaryTree *pp = lca(p,1,6);cout << pp->value;cout << endl;return 0;
}

情况2:普通二叉树,root未知,但是每个节点都有parent指针。

基本思想:分别从给定的两个节点出发上溯到根节点,形成两条相交的链表,问题转化为求这两个相交链表的第一个交点,即传统方法:求出linkedList A的长度lengthA, linkedList B的长度LengthB。然后让长的那个链表走过abs(lengthA-lengthB)步之后,齐头并进,就能解决了
代码如下:

int getLength(bstNode *pNode)
{int length = 0;bstNode *pTemp = pNode;int count = 0;while (pTemp != NULL){count++;pTemp = pTemp->pParent;}return count;
}
bstNode * Lcal(bstNode *pNode1,bstNode *pNode2)
{//pNode1,pNode2为给定的两个节点int len1 = getLength(pNode1);int len2 = getLength(pNode2);int k = 0;bstNode *iter1 = NULL;bstNode *iter2 = NULL;if (len1 <= len2){bstNode *pTemp = pNode2;while (len2-len1>k)//这里注意下,局部变量的使用{k++;pTemp = pTemp->pParent;}iter1 = pNode1;iter2 = pTemp;}else{k = 0;bstNode *pTemp = pNode1;while (len1-len2 > k){k++;pTemp = pTemp->pParent;}iter1 = pTemp;iter2 = pNode2;}//bstNode *iter1 = pNode1;//bstNode *iter2 = pNode2;while (iter1&&iter2 && iter1 != iter2){iter1 = iter1->pParent;iter2 = iter2->pParent;}return iter1;
}
http://www.jmfq.cn/news/5055697.html

相关文章:

  • 3d建模一般学费多少/yoast seo教程
  • 软件开发网站建设维护/网络公司取什么名字好
  • 以前自己做的网站怎么样删除/营口seo
  • 设计成功一个电子商务网站/企业员工培训内容及计划
  • 小程序在哪个网站做/千锋教育课程
  • 网站做微信小程序号码/互联网营销是什么
  • 东莞公司网站价格/seo顾问服
  • 网络营销的培训课程视频/seo推广外包报价表
  • 优而思 网站/ip营销的概念
  • 自己的网站怎么做商城/开发一个网站的步骤流程
  • 高大上的企业网站/怎么样建网站
  • 网站功能模块表格/新人跑业务怎么找客户
  • 政府网站建设 文件/营销策略有哪些有效手段
  • 关于网站的建设论文/国外常用的seo站长工具
  • 郑州做网站优化电话/今晚日本比分预测
  • 网站建设套餐/互联网营销做什么
  • 潍坊哪里能找到做网站的/谷歌搜索引擎免费
  • 重庆网站建设公司电话/交换链接营销案例
  • 天津塘沽爆炸案处理结果/seo入门视频
  • 网站快速备案安全吗/app网络推广方案
  • 一站式网站建设服务/宁波seo网络推广公司排名
  • 网站备案成功后怎么办/网络运营需要学什么
  • 祥云户网站/关键词优化排名第一
  • 丽水网站建设报价/怎么做优化关键词
  • 大型自助建站平台/网站推广优化技巧
  • wordpress删除分类目录/重庆seo关键词优化服务
  • 无锡做网站365caiyi/应用关键词优化
  • 网站建设情况登记表/大型网站建设方案
  • 主流媒体网站建设/it培训机构推荐
  • 电子商务做网站实训体会/嘉兴seo外包平台