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

  • 相关阅读:
    PHP服务器端API原理及示例讲解(接口开发)
    Nginx的启动、停止与重启
    还是,Stairway To Haven
    NetBeans 时事通讯(刊号 # 42 Jan 20, 2009)
    Eve Backstory
    将默认的Netbeans中文版设置为英文界面/如何将Netbeans 6.5设置为英文界面
    Eve Backstory
    将默认的Netbeans中文版设置为英文界面/如何将Netbeans 6.5设置为英文界面
    领域驱动设计和开发实战
    领域驱动设计和开发实战
  • 原文地址:https://www.cnblogs.com/ChevisZhang/p/13383563.html
Copyright © 2011-2022 走看看