zoukankan      html  css  js  c++  java
  • 11.二叉树

    11.二叉树

     

    python实现二叉树的数据结构:

      . 二叉树的排序方式:

        - 广度遍历(层次遍历)

        - 深度遍历:
          - 前序(根左右):把根放到最前面
          - 中序(左根右):把根放到中间
          - 后序(左右根):把根放到最后

    复制代码
    class Node():
        def __init__(self,item):
            self.item = item
            self.right = None
            self.left = None
    class Tree():
        def __init__(self):
            self.root = None
        def add(self,item):
            node = Node(item)
            if self.root is None:
                self.root = node
                return
            else:
                queue = [self.root]
                while queue:
                    cur = queue.pop(0)
                    if cur.left is None:
                        cur.left = node
                        return
                    else:
                        queue.append(cur.left)
                    if cur.right is None:
                        cur.right = node
                        return
                    else:
                        queue.append(cur.right)
        #广度遍历
        def travel(self):
            if self.root is None:
                print('')
                return
            else:
                queue = [self.root]
                while queue:
                    cur = queue.pop(0)
                    print(cur.item)
                    if cur.left is not None:
                        queue.append(cur.left)
                    if cur.right is not None:
                        queue.append(cur.right)
                        
        #深度遍历:前序,中序,后序遍历
        def forwordTravel(self,root):
            if root is None:
                return
            print(root.item,end=' ')
            self.forwordTravel(root.left)
            self.forwordTravel(root.right)
            
        def middleTravel(self,root):
            if root is None:
                return
            self.middleTravel(root.left)
            print(root.item,end=' ')
            self.middleTravel(root.right)
            
        def backTravel(self,root):
            if root is None:
                return
            self.backTravel(root.left)
            self.backTravel(root.right)
            print(root.item,end=' ')
                    
    tree = Tree()
    tree.add('0')
    tree.add('1')
    tree.add('2')
    tree.add('3')
    tree.add('4')
    tree.add('5')
    tree.add('6')
    tree.add('7')
    tree.add('8')
    tree.add('9')
    
    tree.travel()
    tree.forwordTravel(tree.root)
    print('
    ')
    tree.backTravel(tree.root)
    print('
    ')
    tree.middleTravel(tree.root)
    print('
    ')
    复制代码

    python实现排序二叉树:

    复制代码
    #排序二叉树
    class Node():
        def __init__(self,item):
            self.item = item
            self.left = None
            self.right = None
    class Tree():
        def __init__(self):
            self.root = None
        def insert(self,item):
            node = Node(item)
            cur = self.root
            if cur is None:
                self.root = node
                return
            while True:
                if item < cur.item:
                    if cur.left is None:
                        cur.left = node
                        return
                    else:
                        cur = cur.left
                else:
                    if cur.right is None:
                        cur.right = node
                        return
                    else:
                        cur = cur.right
        def preTravel(self,root):
            if root is None:
                return
            print(root.item,end=' ')
            self.preTravel(root.left)
            self.preTravel(root.right)
        def middleTravel(self,root):
            if root is None:
                return
            self.middleTravel(root.left)
            print(root.item,end=' ')
            self.middleTravel(root.right)
        def backTravel(self,root):
            if root is None:
                return
            self.backTravel(root.left)
            self.backTravel(root.right)
            print(root.item,end=' ')
            
    tree = Tree()
    tree.insert(3)
    tree.insert(8)
    tree.insert(5)
    tree.insert(7)
    tree.insert(6)
    tree.preTravel(tree.root)
    print('
    ')
    tree.middleTravel(tree.root)
    print('
    ')
    tree.backTravel(tree.root)
    print('
    ')
    
                
    复制代码
     
     
  • 相关阅读:
    在刷机路上遇到的坑
    转载《Xcode 创建静态库和动态库》
    真机调试时遇到的问题 Reson:image not found
    在swift中使用第三方插件,并建立桥接和OC无缝相连
    在Xcode中使用Alcatraz插件工具
    有感而发,生活
    storyboard 里面的两个页面 (A,B)相互转换、
    IOS程序的启动过程
    1怎样让输入的text文本填写的部分只添加数字、2怎样将输入的数字一次性全部删除 3怎样选择密码 让它不显示 4 怎样实现在没有return的情况下点击button的情况下就能够使键盘页面下落5 怎样实现点击指定的button来对使指定的text进行键盘弹出 6怎样改变button按钮的状态
    键盘响应
  • 原文地址:https://www.cnblogs.com/yanghongtao/p/10970301.html
Copyright © 2011-2022 走看看