当前位置:网站首页>LeetCode 314. Binary tree vertical order traversal - Binary Tree Series Question 6
LeetCode 314. Binary tree vertical order traversal - Binary Tree Series Question 6
2022-07-05 02:17:00 【CP Coding】
Given the root of a binary tree, return the vertical order traversal of its nodes' values. (i.e., from top to bottom, column by column).
If two nodes are in the same row and column, the order should be from left to right.
Example 1:

Input: root = [3,9,20,null,null,15,7] Output: [[9],[3,15],[20],[7]]
Example 2:

Input: root = [3,9,8,4,0,1,7] Output: [[4],[9],[3,0,1],[8],[7]]
Example 3:

Input: root = [3,9,8,4,0,1,7,null,null,null,2,5] Output: [[4],[9,5],[3,0,1],[8,2],[7]]
Constraints:
- The number of nodes in the tree is in the range
[0, 100]. -100 <= Node.val <= 100
The topic requires traversing the binary tree in vertical order , It's from the top to the bottom , Nodes in the same column are put into an array , The final result is a two-dimensional array composed of all column arrays . About the definition of columns : Suppose the column number of a node is col, Then its left child node is col-1, The column number of the right child node is col+1.
Because we are familiar with the horizontal sequence traversal algorithm , Therefore, this problem is based on horizontal sequence traversal , Assign a column number to each node , In this way, node values with the same column number can be put together . First, specify the column number of the root node as 0, Then traverse in horizontal order , In this way, the column number of the node on the left of the root node is negative , Starting from the root node, the column number decreases every time you move to the left 1; The column number of the node on the right of the root node is positive , Starting from the root node, the column number will be added at every position to the right 1; The column number of the node in the same column as the root node is 0. For ease of handling , You can use a two-dimensional array to store the root node and all the columns on its left , The index of an array is the opposite of the column number ( That is, the column number is 0, -1, -2, ... The corresponding array index is 0, 1, 2, ...), Then use a two-dimensional array to store all the columns on the right of the root node ( Because the column number is 0 To the left array , Therefore, the column number is 1, 2, 3, ... The corresponding array index is 0, 1, 2, ...). So when doing horizontal traversal , You can put the node in the corresponding position of the left or right array in real time according to the column number . For the left array , Whenever the absolute value of the column number is equal to the total number of arrays, a new column is added ; For the right array , Whenever the column number is greater than the total number of arrays, a new column is added .
def verticalOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
if not root:
return []
llist, rlist = [], []
lindex, rindex = 0, 1
q = deque([(root, 0)])
while q:
n = len(q)
for i in range(n):
node, index = q.popleft()
if index <= 0:
if len(llist) > -index:
llist[-index].append(node.val)
else:
llist.append([node.val])
else:
if len(rlist) > index - 1:
rlist[index - 1].append(node.val)
else:
rlist.append([node.val])
if node.left:
q.append((node.left, index - 1))
if node.right:
q.append((node.right, index + 1))
llist.reverse()
return llist + rlist
边栏推荐
- Include rake tasks in Gems - including rake tasks in gems
- Win:将一般用户添加到 Local Admins 组中
- Chinese natural language processing, medical, legal and other public data sets, sorting and sharing
- Open source SPL optimized report application coping endlessly
- Summary and practice of knowledge map construction technology
- 使用druid連接MySQL數據庫報類型錯誤
- JVM's responsibility - load and run bytecode
- Yyds dry inventory jetpack hit dependency injection framework Getting Started Guide
- [technology development-26]: data security of new information and communication networks
- Numpy library introductory tutorial: basic knowledge summary
猜你喜欢

力扣剑指offer——二叉树篇

MATLB|多微电网及分布式能源交易

Android advanced interview question record in 2022

Visual explanation of Newton iteration method

官宣!第三届云原生编程挑战赛正式启动!

Visual studio 2019 set transparent background (fool teaching)

The application and Optimization Practice of redis in vivo push platform is transferred to the end of metadata by
![[技术发展-26]:新型信息与通信网络的数据安全](/img/13/10c8bd340017c6516edef41cd3bf6f.png)
[技术发展-26]:新型信息与通信网络的数据安全

Write a thread pool by hand, and take you to learn the implementation principle of ThreadPoolExecutor thread pool

MySQL regexp: Regular Expression Query
随机推荐
Visual explanation of Newton iteration method
One click generation and conversion of markdown directory to word format
RichView TRVUnits 图像显示单位
Yolov5 model training and detection
Runc hang causes the kubernetes node notready
Grpc message sending of vertx
[机缘参悟-38]:鬼谷子-第五飞箝篇 - 警示之一:有一种杀称为“捧杀”
A label colorful navigation bar
Word processing software
Codeforces Global Round 19 ABC
Serious bugs with lifted/nullable conversions from int, allowing conversion from decimal
Application and Optimization Practice of redis in vivo push platform
力扣剑指offer——二叉树篇
The application and Optimization Practice of redis in vivo push platform is transferred to the end of metadata by
使用druid连接MySQL数据库报类型错误
[source code attached] Intelligent Recommendation System Based on knowledge map -sylvie rabbit
Abacus mental arithmetic test
The steering wheel can be turned for one and a half turns. Is there any difference between it and two turns
Grub 2.12 will be released this year to continue to improve boot security
官宣!第三届云原生编程挑战赛正式启动!