LeetCode二叉樹後續遍歷計算深度相關題目

2021-10-04 01:10:35 字數 1382 閱讀 7228

後序遍歷: 先左,再右,最後是根節點。

這類題目的模板:

給定乙個二叉樹,返回它的 後序 遍歷。

class solution 

void postorder(treenode* root)

};

給出乙個完全二叉樹,求出該樹的節點個數。

class solution 

};

給定乙個二叉樹,找出其最大深度。二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。

class solution 

};

給定乙個二叉樹,找出其最小深度。最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。

說明:葉子節點是指沒有子節點的節點

class solution 

int left = mindepth(root->left);

int right = mindepth(root->right);

if ( root->left == null || root->right == null) else

}};

給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。

注意: 這裡的高度平衡二叉樹指的是乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。

class solution 

int depth(treenode* root)

};

給定一棵二叉樹,你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結點路徑長度中的最大值。這條路徑可能穿過根結點。

class solution 

int depth(treenode* root)

};

給定乙個二叉樹,找到最長的路徑,這個路徑中的每個節點具有相同值。 這條路徑可以經過也可以不經過根節點。

注意:兩個節點之間的路徑長度由它們之間的邊數表示。

class solution 

int depth(treenode* root)

if ( root->right != null && root->val == root->right->val)

ans = (arrowleft + arrowright ) > ans ? (arrowleft + arrowright ) : ans;

return arrowleft > arrowright ? arrowleft : arrowright;

}};

leetcode 145 二叉樹的後續遍歷

給定乙個二叉樹,返回它的 後序 遍歷。解法二 非遞迴形式 採用兩個棧實現後續遍歷的過程,具體流程如下 1 申請乙個棧,記為sck1,將頭節點壓入棧sck1中。2 從sck1中彈出的節點記為tmpnode,然後依次將tmpnode的左孩子和右孩子節點壓入sck1中。3 在整個過程中,每次從sck1中p...

二叉樹後續遍歷的幾種方式

資料結構定義 definition for a binary tree node.public class treenode treenode int val treenode int val,treenode left,treenode right 遞迴寫法 class solution 普通迭代...

二叉樹應用 二叉搜尋樹的後續遍歷序列

題目 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷序列的結果。假設輸入的陣列的任意兩個數字都互不相同。分析 在二叉搜尋樹的後序遍歷中,根節點在最後面。前面的序列可以分為兩個部分 乙個為左子樹,小於根節點的值 乙個為右子樹,大於根節點的值。左子樹序列和右子樹序列同樣應該為後序遍歷序列,則可...