題目一:輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。
遞迴版本:
class solution
};
非遞迴(層次遍歷)
// 遞迴遍歷,僅僅一行
class solution
};//迭代版本
class solution
}return depth;
}};
題目二:輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。
class solution
// 平衡二叉樹
// 解法一: 判斷每個結點的左右子樹的深度之差不超過一
bool isbalanced_solution(treenode* proot)
// 繼續判斷左右子樹
return isbalanced_solution(proot->left) && isbalanced_solution(proot->right);
}// 平衡二叉樹
// 解法二: 後序遍歷二叉樹, 同時記錄每個結點的深度, 並判斷每個結點是否平衡
// 此方法中每個結點只被訪問一次
bool isbalanced_solution(treenode* proot)
// 後序遍歷
bool isbalanced_solution(treenode* proot, int &pdepth)
int left, right; // 記錄左右子樹的深度
if(isbalanced_solution(proot->left, left) && isbalanced_solution(proot->right, right))
}return false;
}};
面試題55 二叉樹的深度
輸入一棵二叉樹的根結點,求該樹的深度。從根結點到葉結點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為樹的深度。例如下圖中的二叉樹的深度為4,因為它從根結點到葉結點最長的路徑包含4個結點 從根結點1開始,經過結點2和結點5,最終到達葉結點7 思路 如果一棵樹只有乙個結點,它的深度為1...
面試題55 二叉樹的深度
二叉樹的深度 輸入一棵二叉樹的根節點,求該樹的深度。從根結點到葉結點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為樹的深度。如果一棵樹只有乙個結點,那麼它的深度是1。樹的深度是max 根節點左孩子深度,根節點右孩子深度 1。package com.wsy class tree pu...
面試題55 I 二叉樹的深度
題目 輸入一棵二叉樹的根節點,求該樹的深度。從根節點到葉節點依次經過的節點 含根 葉節點 形成樹的一條路徑,最長路徑的長度為樹的深度 方法 遞迴左右子樹 遞迴遍歷,取左右子樹的最大深度,加當前根結點的 1 個深度,就是結果 class solution intdfs treenode root in...