js 判斷一棵樹 是否為平衡二叉樹

2021-10-09 22:13:20 字數 1543 閱讀 1115

// 二叉樹的生成

function

nodetree

(value)

let ta =

newnodetree

('a');

let tb =

newnodetree

('b');

let tc =

newnodetree

('c');

let td =

newnodetree

('d');

let te =

newnodetree

('e');

let tf =

newnodetree

('f');

let tg =

newnodetree

('g');

ta.left = tb;

ta.right = tc;

tb.left = td;

tb.right = te;

tc.left = tf;

tc.right = tg;

如上面的資料結構,ta是一顆滿二叉樹,也是一顆平衡二叉樹,

平衡二叉樹的定義是啥呢?

條件一:它必須是二叉查詢樹(二叉搜尋樹)。

條件二:每個節點的左子樹和右子樹的高度差至多為1

// 獲取一顆二叉樹的深度

function

getdeep

(doubletree)

/** * 判斷一棵樹是否為平衡二叉樹

* 1.條件, 二叉樹裡面的左右子樹相差不能超過1

* 2.

*/function

balancetree

(doubletree)

if(doubletree.right)

if(math.

abs(leftnum - rightnum)

<=1)

else

}console.

log(

balancetree

(ta)

)// 結果是true

那我們來一顆非平衡的二叉樹,如下:

let ba =

newnode

('ba');

let bb =

newnode

('bb');

let bc =

newnode

('bc');

let bd =

newnode

('bd');

let be =

newnode

('be');

let bf =

newnode

('bf');

ba.left = bb;

ba.right = bc;

bb.left = bd;

bd.right = be;

be.left = bf;

console.

log(

balancetree

(ba)

)// 結果是false

判斷一棵樹是否是平衡二叉樹

題目 程式設計題 平衡二叉樹 時間限制 1000 ms,記憶體限制 256000 kb,長度限制 8000 b 判斷乙個二叉樹是不是平衡 說明 一棵二叉樹任意乙個節點的左右子樹的深度差不大於1,即為平衡二叉樹。給定乙個有n個節點的二叉樹,每個節點有乙個序號表示,樹有m條分支。每個分支用三個數字a b...

二叉樹 判斷一棵樹是否是平衡二叉樹

平衡二叉樹 空樹或者左右兩個孩子高度差不超過1 在涉及到二叉樹的題目時,遞迴函式非常好用 列出可能性 整理出返回值的型別 整個遞迴過程按照同樣的結構得到子樹的資訊,整合子樹的資訊,加工出應該返回的資訊,向上返回 1.左子樹是否平衡 2.右子樹是否平衡 3.左子樹的高度 4.右子樹的高度 根據可能性,...

判斷一棵樹是否為滿二叉樹

首先,我們要知道什麼是滿二叉樹。乙個深度為k,節點個數為 2 k 1 的二叉樹為滿二叉樹。這個概念很好理解。那麼,我們要怎麼判斷一棵樹是否為滿二叉樹呢?思路 在層序遍歷的過程中,找到第乙個非滿節點 non full node 滿節點 full node 指的是同時擁有左右孩子的節點。在找到第乙個非滿...