二叉树:
表示图如下:
常常用来遍历数据或者查找数据:
与链表有点相似,但是它有左右两个方向指向不同的节点,比链表多了一个指向。不能在某个节点打开加入新的节点。
class Node():
def __init__(self, item):
self.item = item
self.left = None
self.right = None
class Tree():
def __init__(self):
self.root = None
def insertNode(self,item):
node = Node(item) # 将Tree下的insertNode里面的item给Node,node得到Node对象的item
if self.root == None:
self.root = node # 树为空的情况将tree的root指向node1
else:
cur = self.root
nodeList = [cur]
while(1):
pop_node = nodeList.pop(0)
if pop_node.left != None:
nodeList.append(pop_node.left)
else:
pop_node.left = node
break
if pop_node.right != None:
nodeList.append(pop_node.right)
else:
pop_node.right = node
break
def trael(self):
cur = self.root
nodeList = [cur]
while(len(nodeList) > 0 ):
pop_node = nodeList.pop(0)
#print(pop_node.item)
if pop_node.left != None:
nodeList.append(pop_node.left)
if pop_node.right != None:
nodeList.append(pop_node.right)
def find_Node(self,item):
isFind = False
cur = self.root
nodeList = [cur]
while(len(nodeList)>0):
pop_node = nodeList.pop(0)
if pop_node.item == item:
isFind = True
break
else:
if pop_node.left != None:
nodeList.append(pop_node.left)
if pop_node.right != None:
nodeList.append(pop_node.right)
print(isFind)
# node = Node(1)
tree = Tree()
tree.insertNode(1)
tree.insertNode(2)
tree.insertNode(3)
tree.insertNode(4)
tree.insertNode(5)
tree.insertNode(6)
tree.insertNode(7)
print(tree.find_Node(11))