参考别人代码实现二叉树

来源:互联网 发布:亲和素淘宝扒皮 编辑:程序博客网 时间:2024/05/16 10:03
#encoding=utf-8class TreeNode:    """    树节点类    """    left,right,data=None,None,0    def __init__(self,data):        #self.parent=None        self.left=None        self.right=None        self.data=dataclass BinaryTree:    """    root表示根节点,currentNode当前遍历到的节点    """    root=None    currentNode=root    def __init(self,root=None):        self.root=root        self.currentNode=root    def addNode(self,data):        return TreeNode(data)    def insert(self,root,data):        if root ==None:            return self.addNode(data)        else:            if data<=root.data:                root.left=self.insert(root.left,data)            else:                root.right=self.insert(root.right,data)        return root    def lookup(self,root,target):        if root==None:            return 0        else:            if target==root.data:                return 1            elif root.data<target:                return self.lookup(root.right,target)            else:                return self.lookup(root.left,target)    def minValue(self,root):        if root.left==None:            return root.data        else:            return self.minValue(root.left)    def maxDepth(self,root):        if root==None:            return 0        else:            return max(self.maxDepth(root.left),self.maxDepth(root.right))+1    def size(self,root):        if root==None:            return 0        else:            return 1+self.size(root.left)+self.size(root.right)    def printTree(self,root):        if root==None:            pass        else:            self.printTree(root.left)            print root.data,            self.printTree(root.right)if __name__=='__main__':    ds=[5,6,4,10,8,7,2]    BTree=BinaryTree()    BTree.root=BTree.addNode(ds[0])    for i in ds[1:]:        BTree.insert(BTree.root,i)    BTree.printTree(BTree.root)
。。。
起初我还以为很简单的。。虽然确实是很简单,但是
写到insert那个方法 ,我就不知道怎么写了。。
真是太水了都。。。
抓狂
那两个return 确实令人有些费解呢。

其余大部分的功能都能写。

不过,在写函数的时候,必须对BTree.root在循环外赋值,好不爽啊。想弄在循环里面赋值,却是各种不行啊

。。刚刚想了下,可把for里面的循环改成这样:
BTree.root=BTree.insert(BTree.root,i)
。其余感觉还好。。。

-----talk is simple,show code....................................生气


0 0
原创粉丝点击