示例#1
0
import collections
from typing import List

from Python.q0tree import TreeNode, stringToTreeNode


class Solution:
    def levelOrder(self, root: TreeNode) -> List[List[int]]:
        if not root:
            return []
        result = collections.defaultdict(list)
        queue = collections.deque([(root, 0)])
        while queue:
            tree_node, level = queue.popleft()
            if not tree_node:
                continue
            result[level].append(tree_node.val)
            queue.append((tree_node.left, level + 1))
            queue.append((tree_node.right, level + 1))
        return list(result.values())


s = Solution()
root = stringToTreeNode('[3,9,20,null,null,15,7]')
print(s.levelOrder(root))
exit(0)
示例#2
0
import collections
from typing import List

from Python.q0tree import TreeNode, stringToTreeNode


class Solution:
    def rightSideView(self, root: TreeNode) -> List[int]:
        if not root:
            return []
        res = []
        queue = collections.deque([root])
        while queue:
            level_length = len(queue)
            for i in range(level_length):
                tree_node = queue.popleft()
                if i == (level_length - 1):
                    res.append(tree_node.val)
                if tree_node.left:
                    queue.append(tree_node.left)
                if tree_node.right:
                    queue.append(tree_node.right)
        return res


s = Solution()
root = stringToTreeNode('[1,2,3,null,5,null,4]')
print(s.rightSideView(root))
exit(0)
示例#3
0
import collections

from Python.q0tree import TreeNode, stringToTreeNode


class Solution:
    def minDepth(self, root: TreeNode) -> int:
        if not root:
            return 0
        queue = collections.deque([(root, 1)])
        while (queue):
            node, level = queue.popleft()
            if not node:
                continue
            if not node.left and not node.right:
                return level
            queue.append((node.left, level + 1))
            queue.append((node.right, level + 1))


s = Solution()
# root = stringToTreeNode('[3,9,20,null,null,15,7]')
root = stringToTreeNode('[2,null,3,null,4,null,5,null,6]')
root = stringToTreeNode('[3,9,20,null,null,15,7]')
print(s.minDepth(root))
exit(0)
示例#4
0
import collections

from Python.q0tree import stringToTreeNode


class Solution:
    def connect(self, root: 'Node') -> 'Node':
        if not root:
            return root
        queue = collections.deque([root])
        while queue:
            level_length = len(queue)
            for i in range(level_length):
                tree_node = queue.popleft()
                if i == (level_length - 1):
                    tree_node.next = None
                else:
                    tree_node.next = queue[0]
                if tree_node.left:
                    queue.append(tree_node.left)
                if tree_node.right:
                    queue.append(tree_node.right)
        return root


s = Solution()
root = stringToTreeNode('[1,2,3,4,5,6,7]')
print(s.connect(root))
exit(0)