zoukankan      html  css  js  c++  java
  • 二叉树的最近公共祖先

    1、题目描述:

    https://leetcode-cn.com/problems/er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof/

    2、思路:

      看官方题解,深入理解深度优先遍历

    3、代码

    package 二叉树;
    
    public class 二叉树的公共父节点 {
        public static void main(String[] args) {
    
    
        }
    
        public TreeNode ans = null;
    
        // x节点 (左子树包含p && 右子树包含q)((根节点就是p || 根节点就是q)&& (右子树含有p || 左子树含有q)这个节点就是公共父节点
        public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
            dfs(root, p, q);
            return ans;
        }
        
        // 本道题能够让我们更好的理解深度优先遍历
        public boolean dfs(TreeNode root, TreeNode p, TreeNode q) {
            if (root == null) {
                return false;
            }
            //深入到左子树,到底返回到本层
            boolean lson = dfs(root.left, p, q);
            //继续深入到右子树,到底返回去到本层
            boolean rson = dfs(root.right, p, q);
            if (lson && rson || ((root.val == p.val || root.val == q.val) && (lson || rson))) {
                ans = root;
            }
            return lson || rson || (root.val == p.val || root.val == q.val);
        }
    
        static class TreeNode {
            int val;
            TreeNode left;
            TreeNode right;
    
            TreeNode(int val) {
                this.val = val;
            }
        }
    
    }

    。。

  • 相关阅读:
    CSU software 新手练习1 解题报告
    HDU 4067 Random Maze
    HDU 1853 Cyclic Tour
    Notepad++搭配MinGW编译运行C,C++程序
    ACM POJ3299-Humidex
    开始正常的做题了=。=
    写在杭电热身赛2之后
    大二了~
    Vim 学习笔记之cvim hot key
    The 10th Zhejiang Provincial Collegiate Programming Contest
  • 原文地址:https://www.cnblogs.com/guoyu1/p/15253997.html
Copyright © 2011-2022 走看看