二叉树的翻转 Python

来源:互联网 发布:c 语言编程软件 编辑:程序博客网 时间:2024/05/11 16:05

还记得在4月时候的腾讯笔试时候就有这道题目,当时是要C++实现,然而我没学过C++,正好最近正在研究算法,就用Python写吧,其实很简单,之后还会把其他树结构的代码也贴上来。

class Node(object):                #定义树的结点    def __init__(self, data=-1, lchild=None, rchild=None):        self.data = data        self.lchild = lchild        self.rchild = rchild
class Binsearchtree(object):    def __init__(self, data):        self.root = Node(data) 
    def inverttree(self, treenode):      #真正的翻转只有这8行代码        if treenode == None:            return None        temp = treenode.lchild        treenode.lchild = treenode.rchild        treenode.rchild = temp        self.inverttree(treenode.lchild)        self.inverttree(treenode.rchild)
树的翻转其实就是递归遍历每一个结点,把所有结点的左孩子和右孩子互换,因为没有定义的孩子的data为None,所以只有一个孩子的结点也不会出现问题

树的结构如下:

上面代码省略了添加删除获取高度等等其他操作,我会在下一篇一同给出..

原创粉丝点击