1、编写一个表示二叉树节点的静态内部类,通过该类对象可以构建一棵二叉树。
2、基于递归,实现算法,思想步骤如下:1. 如果当前搜索根节点为空,则直接返回;2. 如果当前搜索根节点就是一个目标节点,也直接返回该节点即可;3. 递归调用该函数,从当前根节点的左子树中搜索目标节点;4. 递归调用该函数,从当前根节点的右子树中搜索目标节点;5. 如果左子树搜索结果返回空,则直接返回右子树的搜索结果;6. 如果右子树搜索结果返回空,则直接返回左子树的搜索结果;7. 如果左右子树搜索结果都不为空,则返回当前根节点即可。
3、编写本地测试主方法,在主方法中,构建一棵二叉树,并随机获取其中两个节点的最近公共祖先节点。
4、运行本地测试主方法,观察控制台输出,符合预期,本地测试通过。
5、算法复杂度分析,弛阻廖娓二叉树包含 n 个节点:1. 时间复杂度:算法需要遍历二叉树所有节点,时间复杂度为 O(n);2. 空间复杂度:算法没有使用额外的空间,空间复杂度为 O(1),注意:此处迨藻悃顼没有考虑递归调用过程中栈空间的使用。