树(1)

树是一种元素之间存在一对多关系的数据结构,常用于表示组织结构、辅助排序、查找等,一般以倒悬树的形式显示,根在上支在下。

树相关的术语

:树的最顶层的元素,有且仅有一个。
双亲:指的是上一层元素。
孩子:指的是下一层元素
:"孩子"的数量
深度:树的层数
密度:树的元素个数
结点:一个元素就是一个结点

普通树

孩子的数量无限制。

普通树的顺存储

一、对结点的存储顺没有要求
二、从上到下从左到右存储
三、从上到下从左到右存储

普通树的链式储

		typedef struct Node
		{
			TYPE data;
			Node* sub_head;
			Node* next;
		};

二叉树

最多只有两个孩子。

普通二叉树

完全二叉树
若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。

满二叉树
除最后一层无任何子节点外,每一层上的所有结点都有两个子结点的二叉树。

有序二叉树
左子树的所有结点都比双亲小,右子树的所有结点都比双亲大/相等。

平衡二叉树
左右高度相差不超过1的有序二叉树。

好的,我理解了您的问题,请等待我给出答案。 判断两棵是否同构,可以使用递归的方法。首先判断根节点是否相同,如果不同返回False,如果相同则分别递归左子和右子,判断左子和右子是否同构。需要注意的是,如果一棵的左子与另一棵的右子同构,右子与另一棵的左子同构,则这两棵是同构的。 以下是具体的实现方法,可供参考: ```python class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right def is_isomorphic(tree1, tree2): if not tree1 and not tree2: return True if not tree1 or not tree2: return False if tree1.val != tree2.val: return False # 判断左子和右子是否同构 is_left_isomorphic = is_isomorphic(tree1.left, tree2.right) is_right_isomorphic = is_isomorphic(tree1.right, tree2.left) # 如果一棵的左子与另一棵的右子同构,右子与另一棵的左子同构,则这两棵是同构的 is_left_right_isomorphic = is_isomorphic(tree1.left, tree2.left) and is_isomorphic(tree1.right, tree2.right) return is_left_isomorphic and is_right_isomorphic or is_left_right_isomorphic # 示例 # 构造两棵 T1 = TreeNode(1, TreeNode(2, TreeNode(4), TreeNode(5)), TreeNode(3, TreeNode(6), TreeNode(7))) T2 = TreeNode(1, TreeNode(3, TreeNode(7), TreeNode(6)), TreeNode(2, TreeNode(5), TreeNode(4))) # 判断两棵是否同构 print(is_isomorphic(T1, T2)) # 输出True ``` 希望这个答案能够帮到您!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值