Diameter of Binary Tree - Better Design

前端 未结 11 2065
闹比i
闹比i 2020-12-23 15:14

I have written a code for finding diameter of Binary Tree. Need suggestions for the following:

  1. Can I do this without using static variable at class level?
11条回答
  •  不知归路
    2020-12-23 15:54

    Here is one recursive solution in C++ which gives you the height as well as diameter of binary tree.

    struct tree
    {
        int height = -1;
        int diameter = 0;
    };
    
    struct tree BSTDiameter(struct node *root)
    {
        struct tree currentTree, leftTree, rightTree;
        if (root == NULL)
        {
            currentTree.height = -1;
            currentTree.diameter = 0;
            return currentTree;
        }
        leftTree = BSTDiameter(root->left);
        rightTree = BSTDiameter(root->right);
        currentTree.height = ((leftTree.height > rightTree.height) ? leftTree.height : rightTree.height) + 1;
        if (leftTree.height == -1 || rightTree.height == -1)
            currentTree.diameter = 0;
        else
            currentTree.diameter = (leftTree.height + rightTree.height + 3) > (rightTree.diameter > leftTree.diameter ? rightTree.diameter : leftTree.diameter) ? (leftTree.height + rightTree.height + 3) : (rightTree.diameter > leftTree.diameter ? rightTree.diameter : leftTree.diameter);
        return currentTree;
    }
    

    The time complexity of this is O(h) where h is height of the tree. Hope that helped you.

提交回复
热议问题