亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

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
富民县| 安乡县| 新余市| 灵寿县| 永吉县| 灵璧县| 辛集市| 左权县| 喀什市| 安平县| 玛纳斯县| 通江县| 凤城市| 通道| 石棉县| 龙泉市| 团风县| 平乡县| 岱山县| 申扎县| 玛曲县| 涡阳县| 咸宁市| 景泰县| 洮南市| 北海市| 祥云县| 弥渡县| 射洪县| 天峨县| 竹山县| 徐闻县| 兰州市| 丹凤县| 来宾市| 延安市| 寿光市| 苏尼特左旗| 元谋县| 大城县| 正阳县|