後序遍歷: 先左,再右,最後是根節點。
這類題目的模板:
給定乙個二叉樹,返回它的 後序 遍歷。
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 普通迭代...
二叉樹應用 二叉搜尋樹的後續遍歷序列
題目 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷序列的結果。假設輸入的陣列的任意兩個數字都互不相同。分析 在二叉搜尋樹的後序遍歷中,根節點在最後面。前面的序列可以分為兩個部分 乙個為左子樹,小於根節點的值 乙個為右子樹,大於根節點的值。左子樹序列和右子樹序列同樣應該為後序遍歷序列,則可...