博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
236.Lowest Common Ancestor of a Binary Tree
阅读量:5154 次
发布时间:2019-06-13

本文共 1413 字,大约阅读时间需要 4 分钟。

Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree.

According to the : “The lowest common ancestor is defined between two nodes v and w as the lowest node in T that has both v and w as descendants (where we allow a node to be a descendant of itself).”

_______3______       /              \    ___5__          ___1__   /      \        /      \   6      _2       0       8         /  \         7   4

For example, the lowest common ancestor (LCA) of nodes 5 and 1 is 3. Another example is LCA of nodes 5 and 4 is 5, since a node can be a descendant of itself according to the LCA definition.

方法:递归。如果root为空或者root为p或者q节点,那么直接返回root。递归求左右子树中是否有p和q的最近公共祖先。如果左右子树递归求得的结果均不为空,那么表示p和q分属左右子树,直接返回root,否则p和q均属于左子树或者右子树,那么返回递归求出来的结果。

  1. /** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {        if(!root||p==root||q==root)            return root;        TreeNode * left =lowestCommonAncestor(root->left,p,q);        TreeNode * right=lowestCommonAncestor(root->right,p,q);        if(left&&right)//p和q分属root两边            return root;        return left? left:right;//p和q只是位于左右子树之中的一个             }};

     

 

转载于:https://www.cnblogs.com/zhoudayang/p/5041425.html

你可能感兴趣的文章
BZOJ 1251: 序列终结者 [splay]
查看>>
5G边缘网络虚拟化的利器:vCPE和SD-WAN
查看>>
MATLAB基础入门笔记
查看>>
【UVA】434-Matty's Blocks
查看>>
Android开发技术周报 Issue#80
查看>>
hadoop2.2.0+hive-0.10.0完全分布式安装方法
查看>>
django知识点总结
查看>>
C++ STL stack、queue和vector的使用
查看>>
使用Reporting Services时遇到的小问题
查看>>
约瑟夫问题
查看>>
Arduino 报错总结
查看>>
树莓派Android Things物联网开发:树莓派GPIO引脚图
查看>>
矩阵快速幂---BestCoder Round#8 1002
查看>>
js兼容公用方法
查看>>
如何将应用完美迁移至Android P版本
查看>>
【转】清空mysql一个库中的所有表的数据
查看>>
基于wxPython的python代码统计工具
查看>>
淘宝JAVA中间件Diamond详解(一)---简介&快速使用
查看>>
Hadoop HBase概念学习系列之HBase里的宽表设计概念(表设计)(二十七)
查看>>
Kettle学习系列之Kettle能做什么?(三)
查看>>