网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

大数据中怎么验证二叉树的前序序列化

这篇文章将为大家详细讲解有关大数据中怎么验证二叉树的前序序列化,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

创新互联技术团队十年来致力于为客户提供成都网站制作、成都做网站、成都品牌网站建设网络营销推广、搜索引擎SEO优化等服务。经过多年发展,公司拥有经验丰富的技术团队,先后服务、推广了成百上千网站,包括各类中小企业、企事单位、高校等机构单位。

序列化二叉树的一种方法是使用前序遍历。当我们遇到一个非空节点时,我们可以记录下这个节点的值。如果它是一个空节点,我们可以使用一个标记值记录,例如 #。

     _9_

    /   \

   3     2

  / \   / \

 4   1  #  6

/ \ / \   / \

# # # #   # #

例如,上面的二叉树可以被序列化为字符串 "9,3,4,#,#,1,#,#,2,#,6,#,#",其中 # 代表一个空节点。

给定一串以逗号分隔的序列,验证它是否是正确的二叉树的前序序列化。编写一个在不重构树的条件下的可行算法。

每个以逗号分隔的字符或为一个整数或为一个表示 null 指针的 '#' 。

你可以认为输入格式总是有效的,例如它永远不会包含两个连续的逗号,比如 "1,,3" 。

示例 1:

输入: "9,3,4,#,#,1,#,#,2,#,6,#,#"输出: true

示例 2:

输入: "1,#"输出: false

示例 3:

输入: "9,#,#,1"输出: false

解题思路

1,前序遍历二叉树的时候,如果两个孩子是空节点,可以把父节点替换成空节点,依次进行下去,如果最终只剩下根节点是空,则二叉树合法

2,上述过程可以借助栈来实现

3,注意,由于数据可能不是个位数,所以需要用strings.Split,不能用byte直接比较

4,这个过程是边入栈边比较的过程

代码实现

import "strings"func isValidSerialization(preorder string) bool {    nums:=strings.Split(preorder,",")    var stack []string    for i:=0;i2{            l:=len(stack)            if stack[l-1]=="#" && stack[l-2]=="#" &&  stack[l-3]!="#"{//&& stack[l-3]>='0' && stack[l-3]<='9'                stack[l-3]="#"                stack=stack[:l-2]            }else{                break;            }       }    }        if len(stack)==1 && stack[0]=="#"{        return true    }    return false

关于大数据中怎么验证二叉树的前序序列化就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


名称栏目:大数据中怎么验证二叉树的前序序列化
网站地址:http://bjjierui.cn/article/gpgehg.html

其他资讯