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

  • 相关阅读:
    eclipse 批量 查询 替换
    Hibernate包及相关工具包下载地址
    逻辑运算符&& 用法解释
    主流数据库查找前几条数据的区别
    .propertie文件注释
    java.io.EOFException java.io.ObjectInputStream$PeekInputStream.readFully 错误
    数据库的名称尽量要以英文开头,如果全部输数字的话可能会出错的
    **和*的区别
    puTTY与SecureCRT的比较
    Windows下Redis的安装使用
  • 原文地址:https://www.cnblogs.com/ChevisZhang/p/13383563.html
Copyright © 2011-2022 走看看