python學習——二叉樹遍曆,python二叉樹遍

來源:互聯網
上載者:User

python學習——二叉樹遍曆,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)#後序遍曆

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.