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

  • 相关阅读:
    模板的导入和继承
    图解从 URL 到网页通信原理
    HTTP协议详细介绍
    django的模型层
    LeetCode3-Longest Substring Without Repeating Characters
    LeetCode2-Add Two Numbers
    LeetCode1-Two Sum
    面试干货整理
    VS中使用QT调用R脚本
    MFC DLL 资源模块句柄切换[转]
  • 原文地址:https://www.cnblogs.com/ChevisZhang/p/13383563.html
Copyright © 2011-2022 走看看