zoukankan      html  css  js  c++  java
  • 求一颗二叉树中两个节点的最低公共父节点

    题目:求一棵二叉树中两个节点的最低公共父节点

    思路:递归 和 非递归

    public static TreeNode getLastCommonParentRec(TreeNode root, TreeNode node1, TreeNode node2) {
            if (found(root.left, node1)) {
                if (found(root.right, node2)) {
                    return root;
                } else {
                    return getLastCommonParentRec(root.left, node1, node2);
                }
            } else {
                if (found(root.left, node2)) {
                    return root;
                } else {
                    return getLastCommonParentRec(root.right, node1, node2);
                }
            }
        }
    
        public static boolean found(TreeNode root, TreeNode node) {
            if (root == null || node == null)
                return false;
            if (root == node)
                return true;
            boolean found = found(root.left, node);
            if (!found) {
                found = found(root.right, node);
            }
            return found;
        }

    简洁版递归:

    public static TreeNode getLastCommonParentRec2(TreeNode root, TreeNode node1, TreeNode node2) {
            if (root == null)
                return null;
            if (root.equals(node1) || root.equals(node2)) {
                return root;
            }
            TreeNode left = getLastCommonParentRec2(root.left, node1, node2);
            TreeNode right = getLastCommonParentRec2(root.right, node1, node2);
    
            if (left != null && right != null) {
                return root;
            }
    
            if (left != null)
                return left;
            return right;
        }
  • 相关阅读:
    EF之DataBase添加新字段
    VS 发布MVC网站缺少视图
    解决IE下打印iframe时,页面比例变小的问题
    DataTable求列的最大值、最小值、平均值和样本数
    js的splice和delete
    js获取对象的属性个数
    placeholder
    prompt
    依赖注入
    highcharts离线导出图表
  • 原文地址:https://www.cnblogs.com/lfdingye/p/7372541.html
Copyright © 2011-2022 走看看