python----二叉树实现及相关操作

一、二叉树子节点个数

#初始化叶子节点和根结点
class treeNode():
    def __init__(self,data=-1,left=None,right=None):
        self.data=data
        self.left=left
        self.right=right
    def __str__(self):
        return str(self.data)
#递归计算包括根节点在内的所有节点个数
def sd_Node(root):
    if root is None:
        return 0
    else:
        left=sd_Node(root.left)
        right=sd_Node(root.right)
        return left+right+1
#测试
if __name__ == '__main__':
    root = treeNode(1,
                    treeNode(2, treeNode(9), treeNode(4)),
                    treeNode(5))
    sd=sd_Node(root)
    print(sd)

二、二叉树深度

 1 #初始化叶子节点和根结点
 2 class treeNode():
 3     def __init__(self,data,left=None,right=None):
 4         self.data=data
 5         self.left=left
 6         self.right=right
 7     def __str__(self):
 8         return str(self.data)
 9 #遍历二叉树的左右分支,比较大小,返回最大的值,即为深度
10 def sd_Node(root):
11     #判断是否为None
12     if root is None:
13         return 0
14     else:
15         #左分支深度
16         left=sd_Node(root.left)+1
17         #右分支深度
18         right=sd_Node(root.right)+1
19         #比较,返回
20         if left > right:
21             return left
22         else:
23             return right
24 if __name__ == '__main__':
25     root = treeNode(1,treeNode(1),treeNode(1))
26     sd=sd_Node(root)
27     print(sd)

三、二叉树反转

 1 #初始化叶子节点和根结点
 2 class treeNode():
 3     def __init__(self,data,left=None,right=None):
 4         self.data=data
 5         self.left=left
 6         self.right=right
 7     def __str__(self):
 8         return str(self.data)
 9 #递归反转左右节点
10 def fz_tree(root):
11     if root is None:
12         return
13     else:
14         root.left,root.right=fz_tree(root.right),fz_tree(root.left)
15         return  root
16 #前序遍历输出
17 def s_print(root):
18     if root:
19         print(root.data)
20         s_print(root.left)
21         s_print(root.right)
22 #测试
23 if __name__ == '__main__':
24     root = treeNode(1,
25                     treeNode(2,treeNode(3),treeNode(4)),
26                     treeNode(5,treeNode(6)))
27     rot=fz_tree(root)
28     s_print(rot)

 

转载于:https://www.cnblogs.com/I-love-Xiang/p/10079440.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值