关于父级元素给定max-height,子级元素高度设置百分比失效的解决方案

一般情况下,我们需要让父级元素自适应子级元素的内容,而且子级元素在达到一定高度以后需要滚动,有两种情况。

1.父级元素有给定高度

父级元素有给定高度的情况下,子级元素只需要给最大高度,设置滚动即可

<div class="father">

        <div class="child"></div>

</div>

.father {

        height: 100px;

        .child {

                max-height:100%;

                overflow:auto

        }

}

2.父级元素没有给定高度,只有最大给定高度

父级元素有给定高度的情况下,只有最大给定高度,子级元素高度设置百分比无效,这时使用flex实现子级元素设置百分比高度

<div class="father">

        <div class="child"></div>

</div>

.father {

        display: flex;

        .child {

                max-height:100%;

                overflow:auto

        }

}

3.实现效果

 

 

### 回答1: 对于基于单链表的二叉树ADT,我们可以使用一个链表来存储所有节点,其中第一个元素的索引为0。这样,我们就可以通过给定的索引i来访问第i个节点。 要获取给定索引i的父级节点,我们可以使用以下代码: ``` def get_parent(i): if i == 0: # 根节点没有父节点 return None return (i - 1) // 2 # 返回父节点的索引 ``` 要获取给定索引i的左子节点,我们可以使用以下代码: ``` def get_left_child(i): return 2 * i + 1 # 返回左子节点的索引 ``` 要获取给定索引i的右子节点,我们可以使用以下代码: ``` def get_right_child(i): return 2 * i + 2 # 返回右子节点的索引 ``` 希望这些代码能帮到你! ### 回答2: 二叉树(Abstract Data Type, ADT)是一种基于链表的数据结构,每个节点最多有两个子节点。基于单链表的二叉树ADT的设计包括定义节点结构以及实现操作方法。 节点结构包括数据域和指针域,数据域存储节点的值,而指针域分别指向节点的父节点、左子节点和右子节点。定义一个二叉树ADT的节点结构如下: ``` class BinaryTreeNode: def __init__(self, value): self.data = value self.parent = None self.left_child = None self.right_child = None ``` 三个操作分别是获取给定索引i的父级、左子级和右子级。根据索引i可以通过遍历链表找到对应的节点,操作方法如下: 1. 获取父级节点:根据节点的指针域,我们可以通过访问给定节点的`parent`指针域获取其父节点。代码如下: ``` def get_parent(node, index): if index == 0 or node is None: return None curr = node while curr is not None: if index == curr.left_child: return curr if index == curr.right_child: return curr curr = curr.parent return None ``` 2. 获取左子级节点:根据节点的指针域,我们可以通过访问给定节点的`left_child`指针域获取其左子节点。代码如下: ``` def get_left_child(node, index): if node is None: return None curr = node while curr is not None: if index == curr.left_child: return curr.left_child curr = curr.parent return None ``` 3. 获取右子级节点:根据节点的指针域,我们可以通过访问给定节点的`right_child`指针域获取其右子节点。代码如下: ``` def get_right_child(node, index): if node is None: return None curr = node while curr is not None: if index == curr.right_child: return curr.right_child curr = curr.parent return None ``` 以上是基于单链表设计的二叉树ADT的实现。可以根据实际需求对节点结构和操作方法进行进一步扩展和改进。 ### 回答3: 基于单链表设计一个完整的二叉树ADT,我们可以使用以下方式来实现。 1. 创建一个链表节点类,包含一个数据成员和两个指针成员(分别指向左子节点和右子节点)。 2. 创建一个二叉树类(BinaryTree),包含一个根节点和一系列操作方法。 3. 在构建二叉树时,将第一个元素的索引赋值为0,作为根节点的索引。 4. 实现获取父节点的操作 getParent(i): - 首先判断索引i是否为根节点的索引(即为0),如果是,则返回空。 - 遍历整个链表,找到索引为i的节点的父节点,可以通过遍历链表的方式,逐个判断每个节点的左右子节点的索引是否为i,如果是,则该节点即为索引i的父节点。 5. 实现获取左子节点的操作 getLeftChild(i): - 遍历整个链表,找到索引为i的节点的左子节点,可以通过遍历链表的方式,逐个判断每个节点的索引是否为i的左子节点。 6. 实现获取右子节点的操作 getRightChild(i): - 遍历整个链表,找到索引为i的节点的右子节点,可以通过遍历链表的方式,逐个判断每个节点的索引是否为i的右子节点。 通过以上的设计和操作,我们可以在基于单链表的二叉树ADT中,根据给定索引i执行三个操作,分别获取其父节点、左子节点和右子节点。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值