中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

c#二叉樹的最近公共祖先如何找

c#
小樊
81
2024-07-26 02:40:16
欄目: 編程語言

在C#中,我們可以通過遞歸的方法來找到二叉樹中兩個節點的最近公共祖先。具體步驟如下:

  1. 定義一個遞歸函數,該函數的作用是在以root為根節點的二叉樹中查找節點p和節點q的最近公共祖先。
  2. 如果root為null,表示當前節點為空,直接返回null。
  3. 如果root等于p或q,表示當前節點就是要查找的節點之一,直接返回當前節點。
  4. 遞歸查找root的左子樹和右子樹,分別得到left和right。
  5. 如果left和right均不為空,說明p和q分別位于root的左右子樹,那么root就是它們的最近公共祖先。
  6. 如果left為空而right不為空,說明p和q都在右子樹中,返回right。
  7. 如果left不為空而right為空,說明p和q都在左子樹中,返回left。
  8. 如果left和right均為空,說明p和q都不在root的子樹中,返回null。

下面是C#代碼實現:

public TreeNode LowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
    if(root == null || root == p || root == q) {
        return root;
    }
    
    TreeNode left = LowestCommonAncestor(root.left, p, q);
    TreeNode right = LowestCommonAncestor(root.right, p, q);
    
    if(left != null && right != null) {
        return root;
    } else if(left != null) {
        return left;
    } else {
        return right;
    }
}

在代碼中,TreeNode表示二叉樹的節點,包含左右子樹和值等屬性。我們調用LowestCommonAncestor函數,傳入樹的根節點root以及要查找的兩個節點p和q,即可找到它們的最近公共祖先。

0
布拖县| 镇雄县| 葵青区| 平武县| 遵义市| 永定县| 咸阳市| 富裕县| 巴塘县| 深州市| 扶绥县| 舒兰市| 冷水江市| 井冈山市| 兴安盟| 青州市| 来凤县| 通江县| 元阳县| 民勤县| 类乌齐县| 禄丰县| 林芝县| 盈江县| 隆安县| 玉溪市| 五莲县| 丰都县| 全南县| 阳城县| 凤庆县| 漳浦县| 华池县| 淮北市| 吴江市| 贡觉县| 佳木斯市| 中西区| 恩平市| 偏关县| 安义县|