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

Posted Debroon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了331. 验证二叉树的前序序列化相关的知识,希望对你有一定的参考价值。

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

 


题目

传送门:https://leetcode.cn/problems/verify-preorder-serialization-of-a-binary-tree/

 


算法设计:度数

二叉树本来就是图,看成有向图。

有向图中,总的入度 = 总的出度 = 总的边数。

在任何有向图中,所有结点的入度之和等于所有结点的出度之和。

class Solution 
public:
    bool isValidSerialization(string preorder) 
        stringstream ss(preorder);         // CPP没有split函数,stringstream和getline代替,切割字符串,逗号不读取
        string cur;
        int nodes = 1;                     // 默认存在根节点
        while (getline(ss, cur, ','))    // getline(字符数组,读取字符的个数,终止符),作用是每次只读取一个二叉树节点
            nodes--;                       // 非叶子节点入度为 1
            if (nodes < 0) return false;
            if (cur != "#") nodes += 2;   // 非叶子节点出度为 2
        
        return nodes == 0;                 // 最后入度==出度,就是二叉树
    
;

以上是关于331. 验证二叉树的前序序列化的主要内容,如果未能解决你的问题,请参考以下文章

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

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

力扣331-验证二叉树的前序序列化

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

知道一棵二叉树的前序和中序序列求二叉树的后续序列

已知二叉树的中序序列和后序序列,怎么求前序序列