queue.append(root) while queue: node = queue.pop(0) levelNo = levels.pop(0) if lastLevel != levelNo: result.append(tList) tList = [] lastLevel = levelNo tList.append(node.val) if node.left: queue.append(node.left) levels.append(levelNo + 1) if node.right: queue.append(node.right) levels.append(levelNo + 1) result.append(tList) return result # Testing node1 = TreeNode(3) node2 = TreeNode(2) node3 = TreeNode(5) node4 = TreeNode(1) node1.left = node2 node1.right = node3 node2.left = node4 solution = Solution() print(solution.levelOrder(node1))
class Solution(object): def lowestCommonAncestor(self, root, p, q): if (root is None) or (p is None) or (q is None) or (not isinstance(root,TreeNode)) or (not isinstance(p,TreeNode)) or (not isinstance(q,TreeNode)): return None if root.val==p.val or root.val==q.val: return root nodeLeft = self.lowestCommonAncestor(root.left,p,q) nodeRight = self.lowestCommonAncestor(root.right,p,q) if (nodeLeft is not None) and (nodeRight is not None): return root return nodeLeft if (nodeLeft is not None) else nodeRight #Testing node1 = TreeNode(3) node2 = TreeNode(5) node3 = TreeNode(1) node4 = TreeNode(6) node5 = TreeNode(2) node6 = TreeNode(7) node7 = TreeNode(4) node8 = TreeNode(0) node9 = TreeNode(8) node10 = TreeNode(10) node11 = TreeNode(11) node1.left = node2 node1.right = node3 node2.left = node4 node2.right = node5
from treeStructure import TreeNode class Solution(): def findDiameter(self, root): if not root: return 0 else: lH,rH = self.treeHeight(root.left),self.treeHeight(root.right) return max(1+lH+rH,self.findDiameter(root.left),self.findDiameter(root.right)) def treeHeight(self,root): if not root: return 0 else: return 1 + max(self.treeHeight(root.left),self.treeHeight(root.right)) #Testing root = TreeNode(1) root.left = TreeNode(2) root.right = TreeNode(3) root.left.left = TreeNode(4) root.left.right = TreeNode(5) print(Solution().findDiameter(root))