zoukankan      html  css  js  c++  java
  • 二叉树 4 种排序方式

    二叉树示例

    二叉树结点代码

    class _Node:
    
        def __init__(self, value):
    
            self.left = None
            self.right = None
            self.val = value
    
    

    先序遍历

    class BinaryTree:
        # ...
        # 先序遍历
        def _preorder(self, node):
            if node is not None:
                print(node.val)
                self._preorder(node.left)
                self._preorder(node.right)
    
    
    

    中序遍历

    
    class BinaryTree:
        # ...
        # 中序遍历
        def _inorder(self, node):
            if node is not None:
                self._inorder(node.left)
                print(node.val)
                self._inorder(node.right)
    
    

    后序遍历

    class BinaryTree:
        # ...
        # 后序遍历
        def _postorder(self, node):
            if node is not None:
                self._postorder(node.left)
                self._postorder(node.right)
                print(node.val)
    
    

    前三种遍历看起来只是微调了代码顺序,但由于是基于递归调用,产生的结果大不相同。

    宽度遍历

    class BinaryTree:
        # ...
        # 宽度遍历 
        def breadthorder(self):
    
            lst = [self.begin,]
            for node in lst:
                if node.left is not None:
                    lst.append(node.left)
                if node.right is not None:
                    lst.append(node.right)
    
                print(node.val)
    
    
  • 相关阅读:
    最详细的 paypal 支付接口开发--Java版
    Java IO--NIO(二)
    Java IO--NIO(一)
    Java IO--BIO
    ForkJoinPools
    ScheduledThreadPool
    SingleThread
    CachedThreadPool
    ForkJoinPool
    WorkStealingPool
  • 原文地址:https://www.cnblogs.com/zx576/p/7206947.html
Copyright © 2011-2022 走看看