前面以及说了二叉树的创建以及先序,中序,后序,层次遍历的方法,见本文,下面我们来说说实现二叉树的左,右视图。
把至于左右视图是什么,我想小学生都懂,下面直接上案例:
a
b c
# e f #
# # g h # # # #
如上面的二叉树,左视图应该为a,b,e,g;右视图应该为a,c f,h。
那怎样代码实现呢,其实相当简单,只需要在之前的层次遍历的方法上稍微做修改就可以了。
在层次遍历中,左视图只要取每层的第一个节点的值,右视图只要取出每层最后一个结点即可,注,按照上面的树建立的话,就是第一个或最后一个非“#”结点,“#”表示空节点。
那么,下面就来实现:
实现左视图:
# 定义二叉树的结点
class binary_tree_node():
#初始化
def __init__(self,data):
self.data = data
self.left = None
self.right = None
def has_value(self,value):
if self.data == value:
return True
else:
return False
# 定义二叉树
class binary_tree():
#初始化
def __init__(self):
self.root = None
#创建树
def add_node(self,new_node):
#判断新添加结点是否为二叉树结点对象,如果是,进行添加操作,如果不是,转化为二叉树结点对象再进行添加操作
if not isinstance