zoukankan      html  css  js  c++  java
  • 二叉树的非递归遍历

     1 # Definition for a binary tree node.
     2 # class TreeNode:
     3 #     def __init__(self, val=0, left=None, right=None):
     4 #         self.val = val
     5 #         self.left = left
     6 #         self.right = right
     7 class Solution:
     8     def flatten(self, root) -> None:
     9         def pre_dfs(root):
    10             q = [root]
    11             ans = []
    12             while len(q):
    13                 node = q[-1]
    14                 q = q[:-1]
    15                 ans.append(node.val)
    16                 if node.right:
    17                     q.append(node.right)
    18                 if node.left:
    19                     q.append(node.left)
    20             print(ans)
    21         
    22         def last_dfs(root):
    23             q = [root]
    24             ans = []
    25             pre = None
    26             while len(q):
    27                 node = q[-1]
    28                 if (node.left is None and node.right is None) or (pre is not None and (pre == node.left or pre == node.right)):
    29                     q = q[:-1]
    30                     ans.append(node.val)
    31                     pre = node
    32                     # print(pre.val)
    33                 else:
    34                     if node.right:
    35                         q.append(node.right)
    36                     if node.left:
    37                         q.append(node.left)
    38                     
    39             print(ans)
    40 
    41         def mid_dfs(root):
    42             q = []
    43             ans = []
    44             node = root
    45             while len(q) or node is not None :
    46                 while node is not None:
    47                     q.append(node)
    48                     node = node.left
    49                 
    50                 # print ([it.val for it in q], node)
    51                 if len(q):
    52                     node = q[-1]
    53                     ans.append(node.val)
    54                     q = q[:-1]
    55 
    56                     node = node.right
    57             print(ans)
    58 
    59         # pre_dfs(root)
    60         # last_dfs(root)
    61         mid_dfs(root)
    抓住青春的尾巴。。。
  • 相关阅读:
    Centos系统python2.x升级python3.x
    VirtualBox安装Ghost XP
    VirtualBox检查更新失败解决办法
    PyDev+eclipse的编码问题
    redhat开启linux server
    使用VNC实现多用户登录linux系统
    使用webdav实现文档共享
    各类软件使用说明
    linux安装apache软件的过程
    JavaScript获取DOM元素位置和尺寸大小
  • 原文地址:https://www.cnblogs.com/xidian-mao/p/14988140.html
Copyright © 2011-2022 走看看