ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

二叉树转换成字典,python的min-in混合类的使用

2022-08-13 15:34:47  阅读:148  来源: 互联网

标签:None right min python self value dict 二叉树 left


class ToDictMixin(object):
    def to_dict(self):
        return self._traverse_dict(self.__dict__)
    # 具体的实现代码写起来也很直观:我们只需要用hasattr函数动态地访问属性、isinstance函数动态地检测对象类型,并用
    # dict_来访问实例内部的字典即可。
    
    def _traverse_dict(se1f, instance_dict):
        output = {}
        for key, value in instance_dict.items():
            output[key] = se1f._traverse(key, value)
        return output

    def _traverse(self, key, value):
        if isinstance(value, ToDictMixin):
            return value.to_dict()
        elif isinstance(value, dict):
            return self._traverse_dict(value)
        elif isinstance(value, list):
            return [self._traverse(key, i) for i in value]
        elif hasattr(value, '__dict__'):
            return self._traverse_dict(value.__dict__)
        else:
            return value


class BinaryTree(ToDictMixin):
    def __init__(self, value, left=None, right=None):
        self.value = value
        self.left = left
        self.right = right
    # 现在,我们可以把一大批互相关联的Python对象都轻松地转换成字典。


tree = BinaryTree(10, left=BinaryTree(7, right=BinaryTree(9)), right=BinaryTree(13, left=BinaryTree(11)))

print(tree.to_dict())

输出:

{
	'value': 10,
	'left': {
		'value': 7,
		'left': None,
		'right': {
			'value': 9,
			'left': None,
			'right': None
		}
	},
	'right': {
		'value': 13,
		'left': {
			'value': 11,
			'left': None,
			'right': None
		},
		'right': None
	}
}

标签:None,right,min,python,self,value,dict,二叉树,left
来源: https://www.cnblogs.com/heris/p/16581917.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有