剑指offer————(面试题50)获取任意节点的公共父节点
来源:互联网 发布:淘宝开店代销怎么赚钱 编辑:程序博客网 时间:2024/06/05 22:40
//求二叉树中两个结点的最低公共祖先结点//获取结点的路径bool get_node_path(node* root,node* treenode,deque<node*> &path){if(root == NULL){return false;}//如果找到了将结点保存起来if(root == treenode){path.push_back(root);return true;}//如果没有找到则寻找path.push_back(root);//看看左子树是否有该节点bool found = get_node_path(root->left,treenode,path);//如果左子树没有找到该节点,则在右子树中寻找if(!found)found = get_node_path(root->right,treenode,path);//如果左右子树都没找到,则将之前保留的数据从容器中删除if(!found)path.pop_back();//返回寻找的结果0return found;}//获得公共节点node* get_common_node(node* root,deque<node*> &pathA,deque<node*> &pathB){if(root == NULL){return NULL;}else if(!root->left && !root->right){return root;}deque<node*>::iterator iterA = pathA.begin();deque<node*>::iterator iterB = pathB.begin();node* common_node = NULL;while(iterA!=pathA.end() && iterB!=pathB.end()){if(*iterA == *iterB){common_node = *iterA;}iterA++;iterB++;}return common_node;}//整合函数node* getLastParent(node* root,node* A,node* B){deque<node*> resultA;deque<node*> resultB;node* common;if(get_node_path(root,A,resultA) &&get_node_path(root,B,resultB)){common = get_common_node(root,resultA,resultB);}return common;}测试:
int main(){node *root = new node(9);root->left = new node(4);root->left->left = new node(1);root->left->right = new node(5);root->right = new node(15);root->right->left = new node(10);root->right->right = new node(17);root->right->right->left = new node(16);node *q = getLastParent(root,root->left,root->left);if(!q)cout<<q->key<<endl;system("pause");return 0;}
0 0
- 剑指offer————(面试题50)获取任意节点的公共父节点
- 剑指offer 面试题50—树中两个节点的最低公共祖先
- 剑指offer——面试题37:两个链表的第一个公共节点
- 剑指offer 面试题37—两个链表的第一个公共节点
- 经典面试题——求任意两个叶节点中最近的父节点
- 面试题50—树中两个节点的最低公共祖先
- [剑指offer][面试题50]树中两个节点的最低公共祖先
- 剑指Offer:面试题50 树中两个节点的最低公共祖先
- 剑指offer 面试题50 树中两个节点的最低公共祖先
- 【面试题】剑指Offer-50-求两个节点的最近公共祖先
- 剑指Offer---面试题37:两单链表中第一个公共节点
- 程序员面试题精选——找出两个链表的第一个公共节点
- 剑指offer面试题37 两个链表的第一个公共节点
- [剑指offer][面试题37]两个链表的第一个公共节点
- 《剑指Offer》面试题:寻找两个链表的第一个公共节点
- 剑指Offer面试题37:两个链表的第一个公共节点
- 剑指offer-面试题37 两个链表的第一个公共节点
- 【面试题】剑指Offer-37-求两个链表的第一个公共节点
- python os模块总结 .
- VS2010 / MFC + OpenCV 2.4.1打开图片
- API创建员工Element
- 黑马程序员--懒汉式和饿汉式单例设计模式
- LogMiner_Automatically
- 剑指offer————(面试题50)获取任意节点的公共父节点
- Python 正则表达式提取URL中的Scheme
- DHTML(table,row,cell)
- 算法题1+2+...+N
- web.xml 详细介绍
- Messenger和MVVM中的View Services
- 简单的页面打字效果
- API创建员工支付方式
- C++ int和unsigned的区别