树的遍历及根据遍历顺序反推树的形状

这篇博客详细介绍了树的三种遍历方法:前序、中序和后序,并通过实例解析了如何根据中序和后序遍历顺序反推出树的形状。通过具体步骤展示了如何从遍历序列重建树的结构。
摘要由CSDN通过智能技术生成

三种遍历顺序

在这里插入图片描述
以上是网上随便找的一个树
前序遍历:FCADBEHGM(根左右)
中序遍历:ACBDFHEMG(左根右)
后序遍历:ABDCHMGEF(左右根)

中序遍历步骤

中序遍历的规则是【左根右】,我们从root节点A看起;

此时F是根节点,遍历F的左子树;

F的左子树存在,找到C,此时C看做根节点,遍历C的左子树;

C的左子树存在,找到A,此时A看做根节点,遍历A的左子树;

A的左子树不存在,返回A,根据【左根右】的遍历规则,记录A,遍历A的右子树;(此时记录顺序为:A)

A的右子树不存在,返回C,根据【左根右】的遍历规则,记录C,遍历C的右子树;(此时记录顺序为:AC)

C的右子树存在,找到D,此时D看做根节点,遍历D的左子树

D的左子树存在,找到B,B为叶子节点,左右子树不存在,记录B,返回D, 根据【左根右】的遍历规则,记录D,遍历D的右子树;(此时记录顺序为:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HTML5本身并没有提供反推字体型号的功能,但是可以通过JavaScript实现。具体步骤如下: 1. 创建一个包含待测字符串的元素,并设置其样式。 2. 创建一个包含一组预定义字体大小的数组。 3. 使用JavaScript遍历字体大小数组,依次将每个字体大小应用到待测元素上,并获取元素的宽度。 4. 如果元素的宽度小于等于字符串的宽度,则说明该字体大小符合要求,返回该字体大小即可。 以下是一个示例代码: ```html <div id="test-element" style="display: inline-block; white-space: nowrap;"></div> ``` ```javascript function getFontSizeForString(str, fontFamily, maxWidth, fontSizeArray) { var element = document.getElementById("test-element"); element.style.fontFamily = fontFamily; element.innerHTML = str; for (var i = 0; i < fontSizeArray.length; i++) { element.style.fontSize = fontSizeArray[i]; var width = element.offsetWidth; if (width <= maxWidth) { return fontSizeArray[i]; } } return null; } // Example usage var fontSizeArray = ["12px", "14px", "16px", "18px", "20px"]; var fontSize = getFontSizeForString("Hello, world!", "Arial", 100, fontSizeArray); console.log("Font size for 'Hello, world!': " + fontSize); ``` 在上面的示例代码中,我们创建了一个内联元素`<div>`,并将其样式设置为`display: inline-block; white-space: nowrap;`,以确保元素的宽度仅受其内容和字体大小的影响。 然后,我们定义了一个`getFontSizeForString`函数,该函数接受待测字符串、字体族、最大宽度和字体大小数组作为参数。该函数使用JavaScript遍历字体大小数组,依次将每个字体大小应用到待测元素上,并获取元素的宽度。如果元素的宽度小于等于最大宽度,则说明该字体大小符合要求,返回该字体大小即可。 最后,我们在示例代码中使用了`getFontSizeForString`函数,以获取字符串"Hello, world!"的字体大小。字体大小数组设置为["12px", "14px", "16px", "18px", "20px"],最大宽度设置为100。如果函数返回了一个字体大小,则将其输出到控制台。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值