3.10 diámetro del árbol binario

título

Dado un árbol binario, es necesario calcular la longitud de su diámetro. Un árbol binario es la longitud máxima del diámetro de cualesquiera dos nodos en las longitudes de trayectoria. Esta ruta puede pasar a través de la raíz.

Ejemplos

Dado un árbol binario

          1
         / \
        2   3
       / \     
      4   5   

Return 3, que es la longitud del camino [4,2,1,3] o [5,2,1,3].

nota:

Longitud de la trayectoria entre dos nodos está representado por el número de bordes entre los mismos.

pensamiento

Corresponde a la profundidad calculada árbol binario, para cada nodo, los subárboles izquierdo y derecho de la cálculo de la profundidad, por la profundidad de los subárboles izquierdo y derecho de compensación una longitud de trayectoria del nodo actual. A continuación, regrese nodo padre recuento del nodo actual a su profundidad.

código

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    int diameterOfBinaryTree(TreeNode* root) {
        if ( root == nullptr ) 
            return 0;

        int maxVal = 0;

        helper( root, maxVal );

        return maxVal;
    }

    int helper( TreeNode* root, int& maxVal ) {
        if ( root == nullptr ) return 0;

        int left = helper( root->left, maxVal );
        int right = helper( root->right, maxVal );

        int tempDiameter = right + left;
        maxVal = max( maxVal, tempDiameter );

        return max( left, right ) + 1;
    }
};
Ha publicado 183 artículos originales · ganado elogios 43 · vistas 60000 +

Supongo que te gusta

Origin blog.csdn.net/m0_37822685/article/details/104769665
Recomendado
Clasificación