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

     1 class Node(object):
     2     def __init__(self,sName):
     3         self._lChildren = []
     4         self.sName = sName
     5     def __repr__(self):
     6         return "<Node '{}'>".format(self.sName)
     7     def append(self,*args,**kwargs):
     8         self._lChildren.append(*args,**kwargs)
     9     #深度遍历
    10     def print_all_1(self):
    11         print(self)
    12         for oChild in self._lChildren:
    13             oChild.print_all_1()
    14     #广度遍历
    15     def print_all_2(self):
    16         def gen(o):
    17             lAll = [o,]
    18             while lAll:
    19                 oNext = lAll.pop(0)
    20                 lAll.extend(oNext._lChildren)
    21                 yield oNext
    22         for oNode in gen(self):
    23             print(oNode)
    24 
    25 oRoot = Node("root")
    26 oChild1 = Node("child1")
    27 oChild2 = Node("child2")
    28 oChild3 = Node("child3")
    29 oChild4 = Node("child4")
    30 oChild5 = Node("child5")
    31 oChild6 = Node("child6")
    32 oChild7 = Node("child7")
    33 oChild8 = Node("child8")
    34 oChild9 = Node("child9")
    35 oChild10 = Node("child10")
    36 
    37 #向二叉树中加入节点
    38 oRoot.append(oChild1)
    39 oRoot.append(oChild2)
    40 oRoot.append(oChild3)
    41 oChild1.append(oChild4)
    42 oChild1.append(oChild5)
    43 oChild2.append(oChild6)
    44 oChild4.append(oChild7)
    45 oChild3.append(oChild8)
    46 oChild3.append(oChild9)
    47 oChild6.append(oChild10)
    48 #深度优先
    49 oRoot.print_all_1()
    50 #广度优先
    51 oRoot.print_all_2()


  • 相关阅读:
    docker学习
    io性能调优之page cache
    ll命令执行后结果分析
    Angular2+ ViewChild & ViewChildren解析
    <router-outlet> 干什么用的?
    npm基本命令
    什么情况下会出现undefined
    关于VUE调用父实例($parent) 根实例 中的数据和方法
    vue中的this指向问题
    对 Foreach 的理解
  • 原文地址:https://www.cnblogs.com/cx59244405/p/8471518.html
Copyright © 2011-2022 走看看