leetcode-543. 二叉树的直径
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ // 这是求二叉树的宽度 // class Solution { // public: // int diameterOfBinaryTree(TreeNode* root) { // int res = INT_MIN; // if(root==NULL) // return 0; // queue<TreeNode*> q; // q.push(root); // while(!q.empty()){ // int len = q.size(); // res = max(res, len); // while(len--){ // TreeNode* temp = q.front(); // q.pop(); // if(temp->left) // q.push(temp->left); // if(temp->right) // q.push(temp->right); // } // } // return res; // } // }; class Solution { public: int res = 0; int diameterOfBinaryTree(TreeNode* root) { //int res = INT_MIN; if(root==NULL) return 0; depth(root); return res; } int depth(TreeNode* root){ if(root==0) return 0; int left = depth(root->left); // 左子树的深度 int right = depth(root->right); // 右子树的深度 res = max(res, left+right); // 将每个节点的最大直径与当前最大值直径比较 return max(left,right)+ 1; // 把上面一行去掉,这题就变成了求树的深度了 } };