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

山东德州如何网站建设教程/网游推广员

山东德州如何网站建设教程,网游推广员,做游戏能赚钱的网站,湛江网站制作系统情况3:也是最普通的情况,二叉树是普通的二叉树,节点只有left/right,没有parent指针。 10/ /6 14/ / /  /4 8 12   16/ /3 5基本思想:记录从根找到node1和node2的路径,然后再…

情况3:也是最普通的情况,二叉树是普通的二叉树,节点只有left/right,没有parent指针。

                                          10/       /6         14/  /       /   /4   8   12   16/  /3   5

基本思想:记录从根找到node1和node2的路径,然后再把它们的路径用类似的情况一来做分析,比如还是node1=3,node2=8这个case.我们肯定可以从根节点开始找到3这个节点,同时记录下路径3,4,6,10,类似的我们也可以找到8,6,10。我们把这样的信息存储到两个vector里面,把长的vector开始的多余节点3扔掉,从相同剩余长度开始比较,4!=8, 6==6,我们找到了我们的答案。

#include<iostream>
#include<vector>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
//int re = 0;
struct bstNode
{bstNode *pLeft,*pRight;int value;
};
void createTree(bstNode *&pRoot)//创建任意二叉树代码
{bstNode *root = pRoot;int val = 0;    cin >> val;if (val == -1)root = NULL;else{pRoot = (bstNode *)malloc(sizeof(bstNode));pRoot->value = val;createTree(pRoot->pLeft);createTree(pRoot->pRight);  }
}
void preOrder(bstNode *&p)
{if (p != NULL){cout << p->value<<" ";preOrder(p->pLeft);preOrder(p->pRight);}
}
bool findPath(bstNode *pRoot,int val,vector<bstNode *> &path)//从树根到指定节点路径的求法
{if (pRoot == NULL) return false;if (pRoot->value != val){if (findPath(pRoot->pLeft,val,path)){path.push_back(pRoot);return true;}else{if (findPath(pRoot->pRight,val,path)){path.push_back(pRoot);return true;}else{return false;}}}else{path.push_back(pRoot);return true;}
}
bstNode *lcas(bstNode *pRoot,int val1,int val2)//核心代码,求最近公共祖先,这里的返回值没有问题
{vector<bstNode *> path1;vector<bstNode *> path2;bool find = false;bstNode *pResult = NULL;find |= findPath(pRoot,val1,path1);find &= findPath(pRoot,val2,path2);if (find){int min = path1.size()>path2.size()?path2.size():path1.size();int len1 = path1.size()-min;int len2 = path2.size()-min;for(;len1 < path1.size(),len2<path2.size();len1++,len2++)//这里的处理非常巧妙.从相同剩余长度开始比较{if (path1[len1] == path2[len2]){cout << path1[len1]->value;pResult = path1[len1];break;}}}   return pResult;
}
void destroy(bstNode *pRoot)//销毁二叉树
{if(pRoot == NULL) return;destroy(pRoot->pLeft);destroy(pRoot->pRight);free(pRoot);
}
int main()
{bstNode *pRoot = NULL;createTree(pRoot);preOrder(pRoot);int val1 = 0,val2 = 0;cin >> val1;cin >> val2;lcas(pRoot,val1,val2);//cout << result<<endl;destroy(pRoot);return 0;
}

运行结果如下:(centos5.5)
[root@localhost c++]# ./a.out
10 6 4 3 -1 -1 -1 8 5 -1 -1 -1 14 12 -1 -1 16 -1 -1
10 6 4 3 8 5 14 12 16
6 4
6[root@localhost c++]#
有递归可知:
这里path1[]->value = {6,10};(0-path1.size()-1)
path2[]->value = {4,6,10};(0-path2.size()-1);

http://www.jmfq.cn/news/5206771.html

相关文章:

  • 复制别人的代码做网站/推广app接单网
  • 宁波论坛建站模板/seo技术培训中心
  • 如何做一家专门卖零食的网站/云盘网页版登录
  • 浙江网站建设方案/鞍山做网站的公司
  • 互联网推广策略/安徽网络推广和优化
  • 关于php动态网站开发的书籍/晋中网站seo
  • 大学选修课网站建设/苏州优化网站公司
  • 青浦营销型网站建设/seo网站推广seo
  • 按揭车在哪个网站可以做贷款/网络代运营推广
  • 邢台做网站邮箱/东莞网络营销平台
  • 一级a做片性视频.网站在线观看/西安seo
  • 网站设计优秀作品/快速网站推广公司
  • 西安专业做网站/做网站的费用
  • 电子商务网站建设新闻/建站系统
  • 哈尔滨网站建设排行/西安自助建站
  • 山东政务网站建设/站长统计 网站统计
  • 有什么样的网站开发/十大免费软文推广平台
  • 映射做网站/2022年最火文案
  • 做购物网站赚钱吗/站长联盟
  • 网站建设互联网 政府系统/百度关键词搜索次数
  • 网站说建设中/百度关键词推广方案
  • 怎么做交易平台网站/谷歌站长平台
  • 做招聘网站需要什么资质/广告推广平台网站
  • 新闻播报最新/优化设计答案五年级上册
  • 网站名称与主办单位/厦门百度快速优化排名
  • 自己如何做外贸公司网站/知道百度
  • 网站地图导出怎么做/网页优化seo公司
  • 买个域名自己做网站吗/如何免费做视频二维码永久
  • 代理登录网站/爱站关键词挖掘查询工具
  • 企业seo顾问公司/深圳关键词优化公司哪家好