美文网首页
二叉树的建立与检索

二叉树的建立与检索

作者: 苟且偷生小屁屁 | 来源:发表于2017-10-14 21:43 被阅读0次

-- coding: utf-8 --

"""
Created on Mon Apr 03 19:58:58 2017

@author: Administrator
"""

class node(object):
def init(self, data=None, left=None, right=None):
self.data = data
self.left = left
self.right = right

深度

def depth(tree):
if tree == None:
return 0
left, right = depth(tree.left), depth(tree.right)
return max(left, right) + 1

前序遍历

def pre_order(tree):
if tree == None:
return
print tree.data
pre_order(tree.left)
pre_order(tree.right)

中序遍历

def mid_order(tree):
if tree == None:
return
mid_order(tree.left)
print tree.data
mid_order(tree.right)

后序遍历

def post_order(tree):
if tree == None:
return
post_order(tree.left)
post_order(tree.right)
print tree.data

层次遍历

def level_order(tree):
if tree == None:
return
q = []
q.append(tree)
while q:
current = q.pop(0)
print current.data
if current.left != None:
q.append(current.left)
if current.right != None:
q.append(current.right)

按层次打印

def level2_order(tree):
if tree == None:
return
q = []
q.append(tree)
results = {}
level = 0
current_level_num = 1
nextlevelnum = 0
d = []
while q:
current = q.pop(0)
current_level_num -= 1
d.append(current.data)
if current.left != None:
q.append(current.left)
nextlevelnum += 1
if current.right != None:
q.append(current.right)
nextlevelnum += 1
if current_level_num == 0:
current_level_num = nextlevelnum
nextlevelnum = 0
results[level] = d
d = []
level += 1
print results

if name == 'main':
tree = node('D', node('B', node('A'), node('C')), node('E', right=node('G', node('F'))))
print'前序遍历:'
pre_order(tree)
print('\n')
print('中序遍历:')
mid_order(tree)
print('\n')
print '后序遍历:'
post_order(tree)
print('\n')
print '层次遍历'
level_order(tree)
print('\n')
print "层次遍历"
level2_order(tree)

EM,分治法,GMM, 深度优先, 广度优先, 满二叉树, 完全二叉树, 随机森林

相关文章

  • 二叉树的建立与检索

    -- coding: utf-8 -- """Created on Mon Apr 03 19:58:58 201...

  • 2018-12-26

    二叉树的建立与遍历

  • 二叉树机试模板

    二叉树建立与各种排序模板1.根据前序和空值建立二叉树排序 2.根据前序+中序确定二叉树(思想就是按照顺序将左右孩子...

  • 二叉树的各种操作(递归和非递归遍历,树深度,结点个数等等)

    二叉树建立 先给出结点结构: 两种建立方式: 可以根据二叉树根节点和左右子结点的下标关系递归建立二叉树,层次输入二...

  • 二叉树的建立 建立二叉树,利用了递归的原理,也就是在打印二叉树的前中后序遍历算法中打印结点的地方,改成了生成结点,...

  • 数据结构题目45:二叉树的建立

    题目: 建立一棵二叉树。 解题思路:用单个字符表示二叉树中一个结点的数据,这里采用前序遍历算法。建立二叉树的过程如...

  • Django引入全文检索

    全文检索 什么是全文检索全文检索就是针对所有内容进行动态匹配搜索的概念,针对特定的关键词进行建立索引并精确匹配达到...

  • java自定义构造二叉树及其遍历

    首先:二叉树的建立 首先,我们采用广义表建立二叉树(关于广义表的概念,请查看百科的介绍:http://baike....

  • Django 引入全文检索

    1. 全文检索 什么是全文检索全文检索就是针对所有内容进行动态匹配搜索的概念,针对特定的关键词进行建立索引并精确匹...

  • 二叉树算法练习

    二叉树算法题练习。1.为什么使用二叉树? 数组存储方式1)优点:可以通过下标进行访问2)缺点:检索某个值,或者插入...

网友评论

      本文标题:二叉树的建立与检索

      本文链接:https://www.haomeiwen.com/subject/fdwfuxtx.html