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)
    
    
  • 相关阅读:
    Android系统根文件系统目录结构
    4面 晶晨半导体 问题总结
    linux 工作队列
    Linux tasklet 的测试
    ArbotiX-M引脚说明
    locobot
    视频地址
    S1雷达ROS包更新指南
    rospy
    mx-28在 labview环境下的开发
  • 原文地址:https://www.cnblogs.com/zx576/p/7206947.html
Copyright © 2011-2022 走看看