zoukankan      html  css  js  c++  java
  • 树总纲(To be continued)

    递归:

    1.前序,中序,后序:

      def DFS(self,root): 

        if not root: return []

        res  = []

        def helper(node):

          if not node: return

          res.append(node.val)

          if node.left: helper(node.left)

          if node.right: helper(node.right)

        helper(root)

        return res

    2. 宽度遍历

      def BFS(self,root):

        if not root: return []

        res = []

        def helper(node,level):

          if not node:

            return

          if len(res) == level:

            res.append([])

          res[level].append(node.val)

          if node.left: 

            helper(node.left,level+1)

          if node.right:

            helper(node.right,level+1)

        helper(root,0)

        return res

    迭代:

      前序:

      def frontSearch(self,root):

        if not root: return []

        res = []

        stack = [root]

        while stack:

          node = stack.pop()

          res.append(node.val)

          if node.left: stack.append(node.left)

          if node.right: stack.append(node.right)

        return res

      中序:

      def midSearch(self,root):

        if not root: return []

        res = []

        stack = []

        while stack or root:

          if root:

            stack.append(root)

            root = root.left

          else:

            root = stack.pop()

            res.append(root.val)

            root = root.right

        return res

      后序:

      def backSearch(self,root):

        if not root: return []

        res = []

        stack = [root]

        while stack:

          node = stack.pop()

          res.append(node.val)

          if node.left: stack.append(node.left)

          if node.right: stack.append(node.right)

        return res[::-1]

        

      层序遍历:

      def BFS(self,root):

        if not root: return []

        res = []

        nodelist = [root]

        while nodelist:

          nextNodeList = []

          vals =[]

          for node in nodeList:

            vals.append(node.val)

            if node.left: nextNodeList.append(node.left)

            if node.right: nextNodeList.append(node.right)

          res.append(vals)

          nodelist  =[_ for _ in nextNodeList]

        return res

  • 相关阅读:
    python爬取二手房库存,存数据库,生成折线图(下)
    python爬取二手房库存,存数数据库,生成折线图(上)
    python爬取二手房库存,存数据库,生成折线图(中)
    vue input 复制后无法修改
    js对象应用问题
    redis5.0集群搭建
    查看java 字节码的方式
    python 运行js
    对java基本对象的构想
    学习第39天
  • 原文地址:https://www.cnblogs.com/ChevisZhang/p/13383563.html
Copyright © 2011-2022 走看看