III. Binary Tree

  • 增减节点

  • 分而治之的思想 (Divide and conquer)

  • 遍历(Traversal)

遍历1

Preorder Traversal (前序遍历) : root -> left preorder -> right preorder

Inorder Traversal (中序遍历): left inorder -> root -> right inorder

Postorder Traversal (后序遍历): left postorder -> right postorder -> root

遍历2

DFS(深度遍历): stack

BFS(广度遍历): queue (1. add None; 2. length of each level; 3. two queues)

class Solution:
    def findBottomLeftValue(self, root: Optional[TreeNode]) -> int:
        q = [root]
        
        while len(q) != 0:
            node = q.pop(0)
            q.append(None)
            left_value = node.val
            while node != None:
                if node.left != None:
                    q.append(node.left)
                if node.right != None:
                    q.append(node.right)
                node = q.pop(0)
        
        return left_value

Last updated