SBS(2) 平衡二叉樹判斷演算法(後續遍歷)

2021-08-20 01:58:47 字數 595 閱讀 1744

目錄

輸入一棵二叉樹的根節點,判斷該樹是不是平衡二叉樹。如果二叉樹中任意節點的左右子樹的深度相差不超過1,那麼他就是平衡二叉樹。

bool isbalanced(binarytreenode* proot)

上述**簡潔,但是由於乙個節點會被重複遍歷多次,時間效率不高。

bool isbalanced(binarytreenode* proot, int* pdepth)

intleft, right;

if(isbalanced(proot->m_pleft, &left) && isbalanced(proot->m_pright, &right)

}return false;

}

上述**中, 我們用後續遍歷整棵二叉樹。在遍歷某節點的左右子節點之後, 我們可以根據他的左右子節點的深度判斷他是不是平衡的,並得到當前節點的深度。當遍歷到樹的根節點的時候,也就判斷了整顆二叉樹是不是平衡二叉樹。

判斷平衡二叉樹

演算法 樹 平衡二叉樹 平衡二叉樹的概念 左右節點的樹高之差小於1。1.計算節點的高。通過遞迴,求出左右子樹的高度,當前節點的高度,最大的那乙個 1。int getheight treenode root 2.通過遞迴的方法計算左子樹和右子樹的樹高之差是否有小於1的,有就直接返回false.publ...

判斷平衡二叉樹

package com.jsp.tree 判斷是否是平衡二叉樹 author jiangshipan 任何乙個節點 左子樹和右子數高度差小於1 以每乙個節點為頭的樹都是平衡的,則這個樹平衡 可能 1.左樹不平 2.右樹不平 3.左或右高 整棵樹 public class isbalancedtree...

判斷平衡二叉樹

輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。最直接的做法,遍歷每個節點,借助乙個獲取樹深度的遞迴函式,根據該節點的左右子樹高度差判斷是否平衡,然後遞迴地對左右子樹進行判斷 pubic class solution private intmaxdepth treenode root 這種做法有很明顯...