摘要:在為根的二叉樹中找的如果找到了就返回這個如果只碰到,就返回如果只碰到,就返回如果都沒有,就返回三種情況都在左子樹中,都在右子樹中,左右分別在二叉樹的左右子樹找和,找到及返回,根據和是否存在內容決定最低公共祖先終止條件,找到或者,或者到,就在
在root為根的二叉樹中找A,B的LCA:
如果找到了就返回這個LCA
如果只碰到A,就返回A
如果只碰到B,就返回B
如果都沒有,就返回null
/** * Definition of TreeNode: * public class TreeNode { * public int val; * public TreeNode left, right; * public TreeNode(int val) { * this.val = val; * this.left = this.right = null; * } * } */ public class Solution { /** * @param root: The root of the binary search tree. * @param A and B: two nodes in a Binary. * @return: Return the least common ancestor(LCA) of the two nodes. */ public TreeNode lowestCommonAncestor(TreeNode root, TreeNode node1, TreeNode node2) { //三種情況: 都在左子樹中, 都在右子樹中, 左右分別 //在二叉樹的左右子樹找node1和node2, 找到及返回, 根據left和right是否存在內容決定最低公共祖先 if (root == null || root == node1 || root == node2){ return root; } TreeNode left = lowestCommonAncestor(root.left, node1, node2); TreeNode right = lowestCommonAncestor(root.right, node1, node2); if (left != null && right != null){ return root; } if (left != null){ return left; } if (right != null){ return right; } else{ return null; } //終止條件, 找到node1或者node2,或者到null node, 就return // if (root == null || root == node1 || root == node2) { // return root; // } // Divide (在left child和right child里面找node1和2) // TreeNode left = lowestCommonAncestor(root.left, node1, node2); // TreeNode right = lowestCommonAncestor(root.right, node1, node2); // Conquer // if (left != null && right != null) { // return root; // } // if (left != null) { // return left; // } // if (right != null) { // return right; // } // return null; //當left sub和right sub都沒有n1或n2 } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/66444.html
摘要:如果子樹中有目標節點,標記為那個目標節點,如果沒有,標記為。顯然,如果左子樹右子樹都有標記,說明就已經找到最小公共祖先了。如果在根節點為的左右子樹中找的公共祖先,則必定是本身。只有一個節點正好左子樹有,右子樹也有的時候,才是最小公共祖先。 Lowest Common Ancestor of a Binary Search Tree 最新更新請見:https://yanjia.me/zh...
摘要:遞歸左右子樹,若左右子樹都有解,那么返回根節點若僅左子樹有解,返回左子樹若僅右子樹有解,返回右子樹若都無解,返回。對于而言,更為簡單公共祖先一定是大于等于其中一個結點,小于等于另一個結點。 Problem Given the root and two nodes in a Binary Tree. Find the lowest common ancestor(LCA) of the ...
摘要:如果左右子樹返回的最低共同父節點值都不是空,說明和分別位于的左右子樹,那么就是最低共同父節點。 235題-題目要求 Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BST. According to the definition of L...
摘要:優雅的樹形數據結構管理包基于模式設計歡迎不吝優雅的樹形數據設計模式數據和結構分表操作數據不影響結構一個操作簡單無需修改表兼容舊數據完善的樹操作方法支持生成樹形數據支持多棵樹并存多個根支持節點樹修復支持軟刪除依賴關于將樹中每個節點與其后代節點 About 優雅的樹形數據結構管理包,基于Closure Table模式設計. github 歡迎不吝Star Features 優雅的樹形數據...
摘要:為組建的實例化對象為組件的唯一標識為組建的實例化對象為事件名稱為我們寫的回調函數,也就是列子中的在每個中只實例化一次。 React 元素的事件處理和 DOM元素的很相似。但是有一點語法上的不同: React事件綁定屬性的命名采用駝峰式寫法,而不是小寫。 如果采用 JSX 的語法你需要傳入一個函數作為事件處理函數,而不是一個字符串(DOM元素的寫法) 并且 React 自己內部實現了...
閱讀 3638·2021-11-25 09:43
閱讀 636·2021-09-22 15:59
閱讀 1744·2021-09-06 15:00
閱讀 1769·2021-09-02 09:54
閱讀 689·2019-08-30 15:56
閱讀 1176·2019-08-29 17:14
閱讀 1839·2019-08-29 13:15
閱讀 880·2019-08-28 18:28