# 题目

Question 2. Find distance between two given keys of a Binary Tree, no parent pointers are given. Distance between two nodes is the minimum number of edges to be traversed to reach one node from other.
Assumptions:
There are no duplicate keys in the binary tree.

The given two keys are guaranteed to be in the binary tree.

struct Node{
Node* left, *right;
int val;
};
int Level(Node* root, Node* p){
queue<Node*> q;
q.push(root);
int level=0;
while(!q.empty()){
int qsize=q.size();
for(int i=0;i<qsize;i++){
auto cur=q.front();q.pop();
if(cur==p) return level;
if(cur->left) q.push(cur->left);
if(cur->right) q.push(cur->right);
}
level++;
}
}
Node* LCA(Node* root, Node*p1, Node*p2){
if(!root || root==p1 || root==p2) return root;
Node* leftLCA=LCA(root->left, p1, p2);
Node* rightLCA=LCA(root->right, p1, p2);
if(leftLCA && rightLCA) return root;
else if(leftLCA) return leftLCA;
else if(rightLCA) return rightLCA;
else return NULL;
}

int MinDis(Node* root, Node*p1, Node*p2){
Node* lca=LCA(root, p1, p2);
return Level(lca, p1)+Level(lca, p2);
}

LCA加层序遍历 时间ON

http://www.lintcode.com/en/problem/find-the-missing-number/

class Solution {
public:
/**
* @param nums: a vector of integers
* @return: an integer
*/
int findMissing(vector<int> &a) {
int n=a.size();
for(int i=0;i<n;){
if(a[i]!=i && a[i]<n){
swap(a[i], a[a[i]]);
}else{
i++;
}
}
for(int i=0;i<n;i++){
if(a[i]!=i) return i;
}
return n;
}
};


https://leetcode.com/problems/first-missing-positive/

class Solution {
public:
int firstMissingPositive(vector<int>& a) {
int n=a.size();
for(int i=0;i<n;){
if(0<=a[i]-1 && a[i]-1<n && i!=a[i]-1 && a[i]!=a[a[i]-1])
swap(a[i], a[a[i]-1]);
else i++;
}
for(int i=0;i<n;i++){
if(a[i]!=i+1) return i+1;
}
return n+1;
}
};

• 本文已收录于以下专栏：

## 经典程序题目

1：数组全排列： #include #include #include using namespace std; void swap( int *p, int *q) {     ...
• wjd1994
• 2018年01月23日 16:14
• 48

## c++题目整理

• xtzmm1215
• 2015年07月18日 18:29
• 2033

## ACM推荐题目汇总

• lwtdzh999
• 2016年03月07日 21:40
• 1293

## 一些有趣的题目（整理版）

• Minus8cool
• 2006年03月14日 21:30
• 2324

## 常见的链表题目

1.单链表的反序//逆转链表，并返回逆转后的头节点 node* reverse(node *head) { node *cur = head; node *pre = NULL...
• hairetz
• 2010年08月25日 11:46
• 10309

## 【九度】题目1201：二叉排序树

• qq_24573717
• 2017年01月10日 21:17
• 206

## 2018美国数学建模MCM A题翻译：Problem A: Multi-hop HF Radio Propagation

• bat67
• 2018年01月20日 09:37
• 3049

## 题目1 : 传话游戏

• zxdfc
• 2014年04月07日 21:13
• 1720

## 递归几种题目

• zj_133
• 2012年06月07日 09:44
• 863

## 史上最全计算机毕业设计题目4（10万套，大部分全国唯一）

asp公司网站建设(全套) 在线考试制卷系统(任务书,论文,源码) net小型证券术语解释及翻译系统的设计与开发(源码,论文) 原创vf员工培训管理系统(任务书,论文) asp科研信息管理系统...
• QQ_312783267
• 2014年03月02日 16:51
• 4485

举报原因： 您举报文章：题目 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)