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

    #coding=utf-8
    
    
    #构建二叉树(二叉树结点)
    class Node(object):
        def __init__(self, data, left=None, right=None):
            self.data = data
            self.left = left
            self.right = right
    
    tree = Node(1, Node(3, Node(7, Node(0)), Node(6)), Node(2, Node(5), Node(4)))
    
    
    #层次遍历
    def level_order(tree):
       if tree == None:
           return
       q = []
       q.append(tree)
       while q:
           current = q.pop(0)
           print(current.data)
           if current.left:
               q.append(current.left)
           if current.right:
               q.append(current.right)
    
    
    #按层次打印
    def level2_order(tree):
        if tree == None:
            return
        q = []
        q.append(tree)
        level = 0
        d = []
        result = {}
        next_level_num = 0
        current_level_num = 1
        while q:
            current = q.pop(0)
            current_level_num -= 1
            d.append(current.data)
            if current.left:
                q.append(current.left)
                next_level_num += 1
            if current.right:
                q.append(current.right)
                next_level_num += 1
            if current_level_num == 0:
                current_level_num = next_level_num
                next_level_num = 0
                result[level] = d
                level += 1
                d = []
        print(result)
    
    
    #深度遍历
    def deep(tree):
        if tree == None:
            return
        print(tree.data)
        deep(tree.left)
        deep(tree.right)
    
    
    #前序遍历(根 左 右)
    def pre_order(tree):
        if tree == None:
            return
        print(tree.data)
        if tree.left:
            pre_order(tree.left)
        if tree.right:
            pre_order(tree.right)
    
    
    #中序遍历(左 根 右)
    def mid_order(tree):
        if tree == None:
            return
        if tree.left:
            pre_order(tree.left)
        print(tree.data)
        if tree.right:
            pre_order(tree.right)
    
    
    #后序遍历( 左 右 根)
    def post_order(tree):
        if tree == None:
            return
        if tree.left:
            pre_order(tree.left)
        if tree.right:
            pre_order(tree.right)
        print(tree.data)
    当你的才华还撑不起你的野心时
    那你就应该静下心来学习
    当你的能力还驾驭不了你的目标时
    那就应该沉下心来历练
  • 相关阅读:
    JAVA类型之间的转换
    Mysql语句
    Tomcat 优化
    JVM原理及调优
    static
    指针与引用
    sizeof
    遇到问题:c++ 直接cout输出char类型变量地址乱码
    编程过程中全面考虑问题的能力
    表、栈和队列
  • 原文地址:https://www.cnblogs.com/yang-xiansen/p/9053150.html
Copyright © 2011-2022 走看看