本文共 608 字,大约阅读时间需要 2 分钟。
这道题的思路就是:比较树中各个节点的左右子节点长度之和谁最大。通过递归地求解即可实现。时间复杂度可以控制在O(N)。
这道题的重点在于避免多次遍历一棵树。
class Solution {public: int depth(TreeNode *root, int &ans) { if(root == NULL) return 0; int L_depth = 0, R_depth = 0; if(root->left) L_depth = 1 + depth(root->left, ans); if(root->right) R_depth = 1 + depth(root->right, ans); ans = max(L_depth + R_depth, ans); return max(L_depth, R_depth); } int diameterOfBinaryTree(TreeNode* root) { int res = 0; depth(root, res); return res; }};
转载地址:http://zzaq.baihongyu.com/