亚洲av成人片无码网站木瓜小说,请播放青青草黄色影片,国精产品一区一区三区免费,国产超碰人人做人人爽地址一

貨源基地

求樹的高度的算法

求樹的高度的算法

算法概述

樹的高度是指從樹根到最遠(yuǎn)葉子節(jié)點(diǎn)的最長路徑上的邊數(shù)。計(jì)算樹的高度是數(shù)據(jù)結(jié)構(gòu)和算法中的一個(gè)基本問題,廣泛應(yīng)用于計(jì)算機(jī)科學(xué)、網(wǎng)絡(luò)分析等領(lǐng)域。本文將詳細(xì)介紹幾種常用的求樹高度的算法。

1. 遞歸算法

描述:遞歸算法是最直觀的方法,通過遞歸調(diào)用自身來計(jì)算每個(gè)子樹的高度,最終返回整棵樹的高度。

  • 時(shí)間復(fù)雜度:O(n), n 是樹中節(jié)點(diǎn)的數(shù)量。
  • 空間復(fù)雜度:O(h), h 是樹的高度。

算法步驟

  1. 如果樹為空,返回 0。
  2. 否則,遞歸計(jì)算左子樹的高度 left_height 和右子樹的高度 right_height。
  3. 返回 max(left_height, right_height) + 1。

示例代碼(Python)

class TreeNode:
    def __init__(self, value=0, left=None, right=None):
        self.value = value
        self.left = left
        self.right = right

def tree_height(root):
    if root is None:
        return 0
    left_height = tree_height(root.left)
    right_height = tree_height(root.right)
    return max(left_height, right_height) + 1

2. 迭代算法

描述:迭代算法使用廣度優(yōu)先搜索(BFS)或深度優(yōu)先搜索(DFS)來遍歷樹,并記錄當(dāng)前的最大深度。

  • 時(shí)間復(fù)雜度:O(n)
  • 空間復(fù)雜度:O(n)

算法步驟

  1. 初始化一個(gè)隊(duì)列,將根節(jié)點(diǎn)加入隊(duì)列。
  2. 初始化高度變量 height 為 0。
  3. 當(dāng)隊(duì)列不為空時(shí),執(zhí)行以下操作:
    • 增加 height。
    • 遍歷當(dāng)前層的所有節(jié)點(diǎn),將它們的子節(jié)點(diǎn)加入隊(duì)列。
  4. 返回 height。

示例代碼(Python)

from collections import deque

def tree_height(root):
    if root is None:
        return 0
    
    queue = deque([root])
    height = 0
    
    while queue:
        level_size = len(queue)
        for _ in range(level_size):
            node = queue.popleft()
            if node.left:
                queue.append(node.left)
            if node.right:
                queue.append(node.right)
        height += 1
    
    return height

3. 使用深度優(yōu)先搜索(DFS)

描述:DFS 也可以用于計(jì)算樹的高度,通過?;蜻f歸來實(shí)現(xiàn)。

  • 時(shí)間復(fù)雜度:O(n)
  • 空間復(fù)雜度:O(h)

算法步驟

  1. 初始化一個(gè)棧,將根節(jié)點(diǎn)和初始深度(0)加入棧。
  2. 初始化高度變量 height 為 0。
  3. 當(dāng)棧不為空時(shí),執(zhí)行以下操作:
    • 彈出棧頂元素,獲取當(dāng)前節(jié)點(diǎn)和深度。
    • 更新 height 為當(dāng)前深度的最大值。
    • 將當(dāng)前節(jié)點(diǎn)的子節(jié)點(diǎn)及其深度加 1 后壓入棧。
  4. 返回 height。

示例代碼(Python)

def tree_height(root):
    if root is None:
        return 0
    
    stack = [(root, 0)]
    height = 0
    
    while stack:
        node, depth = stack.pop()
        height = max(height, depth + 1)
        if node.left:
            stack.append((node.left, depth + 1))
        if node.right:
            stack.append((node.right, depth + 1))
    
    return height

4. 使用動態(tài)規(guī)劃

描述:動態(tài)規(guī)劃方法通過自底向上的方式計(jì)算每個(gè)節(jié)點(diǎn)的高度,適用于大規(guī)模樹結(jié)構(gòu)。

  • 時(shí)間復(fù)雜度:O(n)
  • 空間復(fù)雜度:O(n)

算法步驟

  1. 初始化一個(gè)字典 heights,用于存儲每個(gè)節(jié)點(diǎn)的高度。
  2. 定義一個(gè)遞歸函數(shù) get_height,用于計(jì)算并返回節(jié)點(diǎn)的高度。
  3. 對于每個(gè)節(jié)點(diǎn),如果其高度已計(jì)算過,則直接返回;否則,遞歸計(jì)算其子節(jié)點(diǎn)的高度,并更新 heights。
  4. 返回根節(jié)點(diǎn)的高度。

示例代碼(Python)

def tree_height(root):
    if root is None:
        return 0
    
    heights = {}
    
    def get_height(node):
        if node is None:
            return 0
        if node in heights:
            return heights[node]
        left_height = get_height(node.left)
        right_height = get_height(node.right)
        heights[node] = max(left_height, right_height) + 1
        return heights[node]
    
    return get_height(root)

總結(jié)

以上介紹了四種求樹高度的算法,包括遞歸算法、迭代算法、深度優(yōu)先搜索(DFS)和動態(tài)規(guī)劃。每種算法都有其適用場景和優(yōu)缺點(diǎn),選擇合適的算法可以提高程序的效率和可讀性。希望本文對您有所幫助!

為大家推薦園林中7大類50種常見的植物品種,未竟事宜,敬請電訊。

彩葉植物

1、日本紅楓 (春季紅 2~5米高)

<a href='http://www.wuzhouwash.com/linmuzhongzi/1726.html' target='_blank'>日本紅楓</a>--長景園林

2、中國紅楓 (三季紅 2~5米高)

3.美國紅楓 (大喬木10~40米)

<a href='http://www.wuzhouwash.com/linmuzhongzi/1798.html' target='_blank'>美國紅楓</a>

藤本植物

1.阿知紫藤

阿知<a href='http://www.wuzhouwash.com/linmuzhongzi/1806.html' target='_blank'>紫藤</a>粉色日系<a href='http://www.wuzhouwash.com/tengbenpanyuanzhiwu/3418.html' target='_blank'>紫藤花</a>

2.熊野紫藤

日本長穗熊野<a href='http://www.wuzhouwash.com/linmuzhongzi/1806.html' target='_blank'>紫藤</a>日系

3.八重黑龍紫藤

八重黑龍<a href='http://www.wuzhouwash.com/linmuzhongzi/1806.html' target='_blank'>紫藤</a>

4.安了寺紫藤

安了寺<a href='http://www.wuzhouwash.com/linmuzhongzi/1806.html' target='_blank'>紫藤</a>日系日本白色<a href='http://www.wuzhouwash.com/linmuzhongzi/1806.html' target='_blank'>紫藤</a>

松柏類植物

1、刺松

<a href='http://www.wuzhouwash.com/songbailei/3487.html' target='_blank'>刺柏</a>圖片<a href='http://www.wuzhouwash.com/songbailei/3487.html' target='_blank'>刺柏</a>基地實(shí)拍

2、圓柏

<a href='http://www.wuzhouwash.com/songbailei/3469.html' target='_blank'>圓柏</a>

3、黑松

<a href='http://www.wuzhouwash.com/linmuzhongzi/1716.html' target='_blank'>黑松</a>苗圖片基地實(shí)拍

水生植物

1.蘆葦苗

<a href='http://www.wuzhouwash.com/shuicaozhongzi/1587.html' target='_blank'>蘆葦</a>

2.荷花苗

<a href='http://www.wuzhouwash.com/shuishengshuicao/3439.html' target='_blank'>荷花種苗</a>

3.菖蒲

<a href='http://www.wuzhouwash.com/shuishengshuicao/3427.html' target='_blank'>水菖蒲</a>

竹類植物

1.青竹

<a href='http://www.wuzhouwash.com/zhumiaozhuzi/3442.html' target='_blank'>青竹</a>

2.紫竹

<a href='http://www.wuzhouwash.com/zhumiaozhuzi/3447.html' target='_blank'>紫竹</a>

3.金鑲玉竹

<a href='http://www.wuzhouwash.com/zhumiaozhuzi/3448.html' target='_blank'>金鑲玉竹</a>

大喬木行道樹類

1.法桐 (世界級的行道樹)

<a href='http://www.wuzhouwash.com/linmuzhongzi/2262.html' target='_blank'>法桐</a>

2.垂柳 (生長快,樹冠濃密,綠期長,耐寒)

垂柳圖片

3.白玉蘭 (春花)

<a href='http://www.wuzhouwash.com/linmuzhongzi/1731.html' target='_blank'>白玉蘭</a>圖片<a href='http://www.wuzhouwash.com/linmuzhongzi/1731.html' target='_blank'>白玉蘭</a>基地實(shí)拍

草坪草類植物

1.百慕大種子

脫殼<a href='http://www.wuzhouwash.com/caopingzhongzi/1663.html' target='_blank'>百慕大種子</a>

2.早熟禾種子

<a href='http://www.wuzhouwash.com/caopingzhongzi/1679.html' target='_blank'>早熟禾種子</a>

3.高羊茅種子

<a href='http://www.wuzhouwash.com/caopingzhongzi/1667.html' target='_blank'>高羊茅種子</a>

4.剪股穎種子

<a href='http://www.wuzhouwash.com/caopingzhongzi/1670.html' target='_blank'>剪股穎種子</a>

5.馬尼拉草坪

<a href='http://www.wuzhouwash.com/caopingzhongzi/3258.html' target='_blank'>馬尼拉草坪</a>

6.果嶺草種子

<a href='http://www.wuzhouwash.com/caopingzhongzi/1660.html' target='_blank'>果嶺草</a>草坪

7.黑麥草種子

<a href='http://www.wuzhouwash.com/caopingzhongzi/1666.html' target='_blank'>多年生黑麥草種子</a>

花草類植物

1.金盞菊種子

<a href='http://www.wuzhouwash.com/caohuazhongzi/1571.html' target='_blank'>金盞菊種子</a>圖片

2.石竹種子(可代替草坪的花卉,適宜密植,耐熱耐旱)

<a href='http://www.wuzhouwash.com/caohuazhongzi/97045.html' target='_blank'>石竹種子</a>

3.格?;ǚN子 (純潔樸素的野花系列,好養(yǎng)好看)

<a href='http://www.wuzhouwash.com/caohuazhongzi/1054.html' target='_blank'>格?;ǚN子</a>

4.矢車菊種子

<a href='http://www.wuzhouwash.com/caohuazhongzi/1624.html' target='_blank'>矢車菊種子</a>

5.雛菊種子

<a href='http://www.wuzhouwash.com/caohuazhongzi/1032.html' target='_blank'>雛菊種子</a>

6.福祿考種子

福祿考<a href='http://www.wuzhouwash.com/' target='_blank'>種子</a>

7.含羞草種子 (奇異植物,會動的植物)

<a href='http://www.wuzhouwash.com/caohuazhongzi/1058.html' target='_blank'>含羞草種子</a>

8.黑心菊種子 (狀若葵花,黑心黃花)

<a href='http://www.wuzhouwash.com/caohuazhongzi/1060.html' target='_blank'>黑心菊種子</a>

Copyright © 2014-2025 沭陽三點(diǎn)水商貿(mào)有限公司 版權(quán)所有