二叉树的最近公共祖先(递归方法需要回看)

二叉搜索树,思路较简单,从上至下遍历一次。

即判断根节点与输入的两个节点的值的大小:

如果根节点比两个节点值都小,说明最近祖先在根节点的右子树中

如果根节点比两个节点值都大,说明最近的祖先在根节点的左子树中

如果根节点的值在两个节点值的区间内,说明两个节点分布在不同的子树中,返回该节点即为最近的祖先。


难度较大的是,普通二叉树的最近公共祖先,由于没有值的大小关系了,故有以下几个思路:

一:深度优先搜索,构建一个哈希表,记录每个节点的父节点。

然后用一个hashset存储p的所有父节点

遍历q的父节点,如果找到一个父节点在hashset中,则return 该节点。

递归的方法没大看明白。



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。