2019-10-23

作者: NeverFade | 来源:发表于2019-10-23 02:14 被阅读0次

662. Maximum Width of Binary Tree

二叉树同层两元素间距的计算

记二叉树的节点值为val,定义其左子节点的值为2*val(如果存在),右子节点的值为2*val+1(如果存在),则同层两节点的间距为abs(val_1 - val_2)+1(本题包括了两节点间的空节点,若不考虑空节点,用队算一下间隔就行)。

class Solution {
public:
    int widthOfBinaryTree(TreeNode* root) {
        queue<TreeNode*> que;
        que.push(root);
        int res = 1;
        root->val=1;
        while(!que.empty()){
            int n = que.size();
            int left_most = que.front()->val;
            while(n--){
                auto head = que.front();
                que.pop();
                res = max(res, head->val-left_most+1);
                if(head->left){
                    head->left->val=(2*head->val)%INT_MAX;
                    que.push(head->left);
                }  
                if(head->right){
                    head->right->val=(2*head->val+1)%INT_MAX;
                    que.push(head->right);
                } 
            }
        }
        return res;
    }
};

相关文章

网友评论

    本文标题:2019-10-23

    本文链接:https://www.haomeiwen.com/subject/xychvctx.html