zoukankan      html  css  js  c++  java
  • python学习——二叉树遍历

    import os,sys

    class node:
    def __init__(self,item):
    self.num=item
    self.lchild=None
    self.rchild=None

    class tree:
    def __init__(self):
    self.root=None

    def add(self,ii):
    inode = node(ii)
    if self.root is None:
    self.root=inode
    else:
    p=[self.root]
    iipp=0
    while 1:
    ip=p[iipp]
    #print ip
    iipp=iipp+1
    if ip.lchild is None:
    ip.lchild=inode
    return
    elif ip.rchild is None:
    ip.rchild = inode
    return
    else:
    p.append(ip.lchild)
    p.append(ip.rchild)

    def lorder(self,node1):
    l=[]
    if node1 is not None:
    l.append(node1.num)
    ll= self.lorder(node1.lchild)
    l=l+ll
    #l.append(ll)#带结构
    rl = self.lorder(node1.rchild)
    #l.append(rl)#带结构
    l=l+rl
    return l

    def morder(self,node2):
    m = []
    if node2 is not None:
    lm = self.morder(node2.lchild)
    m = m + lm
    m.append(node2.num)
    rm = self.morder(node2.rchild)
    m = m + rm
    return m

    def rorder(self,node3):
    r = []
    if node3 is not None:
    lr = self.rorder(node3.lchild)
    r = r + lr
    rr = self.rorder(node3.rchild)
    r = r + rr
    r.append(node3.num)
    return r

    if __name__ == '__main__':
    t=tree()
    for i in range(1,10):
    t.add(i)
    print t.lorder(t.root)#先序遍历
    print t.morder(t.root)#中序遍历
    print t.rorder(t.root)#后序遍历
  • 相关阅读:
    ajax工作原理
    ajax 和xmlHttpRequest区别
    ajax 基本语法
    javascript 中XMLHttpRequest 实现前台向后台的交互
    Javascript 中ajax实现前台向后台交互
    javascript 中函数eval()
    两道有趣的面试题
    linux 中的快捷键
    linux awk命令详解
    linux sed命令详解
  • 原文地址:https://www.cnblogs.com/zhang-study/p/8411108.html
Copyright © 2011-2022 走看看