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. 验证二叉树的前序序列化的主要内容,如果未能解决你的问题,请参考以下文章