从二叉树看类,对象和面向对象编程

一句话
对象就是活的类

对象在函数里面活动执行任务
本身的自带属性或者行为是在类里面提前定义好的

二叉树来看:
实际上,递归函数里面的root就是类的活体,本来这个类就是一个节点的类里面有三个属性,root就是类的活体,是root赋予类生命,让root能在递归函数里面成为能够动态执行函数的节点,如果没有root,类就是死的,只是一个设计图,所以可以任意调用类里面的属性
所以二叉树递归函数里面的root就是上面定义的treenode类的对象。
之所以叫做,面向对象编程,是因为对象是用在函数里面用来执行任务的,但是这个对象需要有一些属性或者本身就应该有的行为,所以需要提前在类里面定义这个对象的属性或者行为
像在二叉树里面,就是先用trenode类定义了对象root的属性,这样root对象才能在函数中执行任务

python怎么执行的
当你在递归函数内部写 root.left 时,root 是一个特定的 TreeNode 类型的对象,这个对象可以是树中的任何一个节点,而不仅仅是根节点。root.left 表示你想访问当前节点(即 root 对象)的左子节点。

Python 在执行这段代码时,会检查 root 这个对象是否有 left 这个属性。因为 rootTreeNode 类的一个实例,在 TreeNode 类的定义中指定了 left 属性(即使在某些情况下可能是默认值 None),所以 Python 可以正确识别并访问这个属性。

如果你尝试访问一个对象没有定义过的属性,Python 会抛出一个 AttributeError 异常,因为那个属性不存在于该对象的类定义中。

总结:

  1. 类定义:在类定义中,声明了 TreeNode 类具有 value, left, 和 right 属性。
  2. 实例化:当创建一个 TreeNode 类的新实例时,这些属性被初始化。就是root
  3. 属性访问:当你在代码中访问这些属性,比如 root.left,Python 会查找 root 对象的类定义中是否存在这个属性,并允许你访问它。
  4. 递归调用:在递归函数中,每次调用自身时,都会传入一个新的节点(当前节点的左子节点或右子节点),然后对这个新节点重复同样的过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值