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;
            }
        }
    
    }

    。。

  • 相关阅读:
    关于本人对javascript闭包的理解
    关于闭包内存泄露的处理方法
    javascript超时调用、间歇调用
    浏览器加载和渲染html的顺序
    CSS hack
    JS在操作IE与FF的一些区别
    javascript对select option操作
    jsp端使用ApplicationContext
    人生的35个经典好习惯
    2008个人总结
  • 原文地址:https://www.cnblogs.com/guoyu1/p/15253997.html
Copyright © 2011-2022 走看看