六月集训(第19天)—二叉树(1/4)

二叉树

1. 331. 验证二叉树的前序序列化

    思路:
        除根节点提供两个出度
        叶节点提供一个入度
        其余结点提供一个入度和两个出度
        通过数学计算可知,满足成为一颗二叉树的条件是,树的出度等于入度,且中间不能出现某个结点提供入度后入度大于出度的情况

class Solution {
public:
    bool isValidSerialization(string preorder) {
        preorder += ',';
        int preorder_len = preorder.size(), i;
        int indeg = -1;
        int outdeg = 0;
        for (i = 0; i < preorder_len; ++i) {
            if (preorder[i] == ',') continue;
            ++indeg;
            if (outdeg < indeg) return false;   //  要在结点提供出度之前判断
            if (preorder[i] != '#') {   // 接受完整的数字
                outdeg += 2;
                while (preorder[i] != ',') ++i;
                --i;
            }
        }
        return outdeg == indeg;
    }
};

2.

    思路:
        

在这里插入代码片

3.

    思路:
        

在这里插入代码片

4.

    思路:
        

在这里插入代码片
posted @ 2022-06-19 23:49  番茄元  阅读(20)  评论(0)    收藏  举报