尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
二叉树层次序序列和度数创建子女右兄弟链表示
最近在准备考研阅读王道数据结构单科书时看到一个问题问题是给定一棵树(不一定是二叉树)所有节点的层次次序序列和度数创建该树的子女右兄弟链表示书中给出的参考答案略显繁琐所以自己考虑了一个算法运用层次次序的特点和队列解决问题。尽管代码简单但详述这一算法非常费劲可能吃力不讨好如果想要理解这一算法可以选较简单的测试样例自己手动模拟一遍这样效果可能更好。#includepch.h#includedeque#includestring#includevector#includeiostreamusingnamespacestd;structChildRightBrotherNode//子女右兄弟链节点{chardata;//数据域ChildRightBrotherNode*first_childnullptr;//长子指针ChildRightBrotherNode*next_siblingnullptr;//右兄弟指针ChildRightBrotherNode(chard):data(d){}};structDequeNode{ChildRightBrotherNode*tree_node;//每一层的树节点指针string::size_type degree;//该树节点的度数DequeNode(ChildRightBrotherNode*t,intd):tree_node(t),degree(d){}};voidpreOutPut(ChildRightBrotherNode*root){if(root!nullptr){coutroot-data;preOutPut(root-first_child);preOutPut(root-next_sibling);}}voidinOrderOutPut(ChildRightBrotherNode*root){if(root!nullptr){inOrderOutPut(root-first_child);coutroot-data;inOrderOutPut(root-next_sibling);}}intmain(){dequeDequeNodework_queue;vectorpairchar,string::size_typenode_degree_array{{A,3},{B,2},{C,1},{D,2},{E,0},{F,0},{G,0},{H,0},{I,0}};//节点数据域-度数数组各树节点从左到右按层次序排列string::size_type i0;ChildRightBrotherNode*rootnewChildRightBrotherNode(node_degree_array[0].first);//创建根节点work_queue.push_back(DequeNode(root,node_degree_array[0].second));//根节点及其度数入队while(work_queue.empty()false)//队列不为空重复迭代{DequeNode pwork_queue.front();//出队一个队列节点work_queue.pop_front();ChildRightBrotherNode*qp.tree_node;//获取当前层的树节点指针string::size_type j1;for(;jp.degree;j)//将当前树节点的所有子女节点以右兄弟链的形式链接至当前树节点{if(j1){q-first_childnewChildRightBrotherNode(node_degree_array[ij].first);//创建当前树节点的长子节点work_queue.push_back(DequeNode(q-first_child,node_degree_array[ij].second));//长子节点及度数入队qq-first_child;}else{q-next_siblingnewChildRightBrotherNode(node_degree_array[ij].first);//创建当前树节点长子节点之后的兄弟节点work_queue.push_back(DequeNode(q-next_sibling,node_degree_array[ij].second));//兄弟节点及度数入队qq-next_sibling;}}iij-1;//将i更新为当前树节点的直接子女节点中最右侧的子女节点在node_degree_array数组中的下标}cout普通树的先根次序序列为:;preOutPut(root);//先序遍历子女右兄弟链输出先根次序序列coutendl;cout普通树的后根次序序列为:;inOrderOutPut(root);//中序遍历子女右兄弟链输出后根次序序列coutendl;}
RELATED

相关推荐

Windows资源管理器已停止工作?详解explorer.exe崩溃排查与修复

Windows资源管理器已停止工作?详解explorer.exe崩溃排查与修复

简介:Windows 资源管理器频繁报错“已停止工作”,多与系统文件损坏、第三方插件异常或软件安装冲突有关。资源内的docx操作笔记专门讲解如何借助Windows 7/8自带的“可靠性监视器”来排查该问题,适用范围明确,适合普通用户、电脑维…

📅 2026/11/9 22:52:05
Wand-Enhancer 完整指南:3 步给 Wand(WeMod)解锁 Pro 与手机远程控制

Wand-Enhancer 完整指南:3 步给 Wand(WeMod)解锁 Pro 与手机远程控制

Wand-Enhancer 完整指南:3 步给 Wand(WeMod)解锁 Pro 与手机远程控制 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer…

📅 2026/11/9 22:52:05
如何部署 LiveKit:从本地到 K8s 集群的完整指南(含避坑清单)

如何部署 LiveKit:从本地到 K8s 集群的完整指南(含避坑清单)

如何部署 LiveKit:从本地到 K8s 集群的完整指南(含避坑清单) 【免费下载链接】livekit End-to-end realtime stack for connecting humans and AI 项目地址: https://gitcode.com/GitHub_Trending/li/livekit LiveKit 是一个高性能的 …

📅 2026/10/11 14:48:24
MORE NEWS

更多资讯

📰

江苏电工证全国可用吗?实操考试心里没底怕挂科?郑州报考避坑指南

江苏电工证全国可用吗?实操考试心里没底怕挂科?郑州报考避坑指南 实操考试心里没底怕挂科?你不是一个人,尤其是在郑州报考电工证的焦作朋友,很多人都有这种担忧。今天就从江苏电工证是否全国通用说起,结合郑州报考避坑指南,帮你理清楚报考流程、考试准…

📰

江苏电工证补贴申请网上查询怎么操作?实操考试心里没底怕挂科

江苏电工证补贴申请网上查询怎么操作?实操考试心里没底怕挂科 实操考试心里没底怕挂科,这几乎是所有准备报考电工证的朋友共同的困扰。尤其是在江苏地区, 江苏电工证补贴申请…

📰

低压特种电工证解析怎么报名才靠谱别踩坑

低压特种电工证解析怎么报名才靠谱别踩坑 怕考不过白交培训费?你不是一个人!现在考低压特种电工证的人越来越多,但培训机构质量参差不齐,很多人花了钱还没拿到证,或者拿到的证根本没用。别急,我今天就从济源水利工程从业者的角度,给你讲清楚低压特种电…

📰

电工证CA证书密码复审延期怎么办理 上岗必备证书怎么搞定了

电工证CA证书密码复审延期怎么办理 上岗必备证书怎么搞定了 你是不是正为了找工作四处奔波,但偏偏卡在了 电工证CA证书密码 这一关?没有这张证,连入职资格都拿不到, 上岗必备…

📰

高级电工证考多少钱?学历不高怕报不上名?保姆级教程来了

高级电工证考多少钱?学历不高怕报不上名?保姆级教程来了 你是不是也这样想: 学历不高怕报不上名 ,想考个高级电工证又担心条件不够?别慌,今天我就用 保姆级教程…

📰

大厂电工证报名网址全流程办理指南 通过率揭秘

大厂电工证报名网址全流程办理指南 通过率揭秘 怕考不过白交培训费?特种作业证不是随便考的,尤其是大厂电工证报名网址一搜一大把,但真正能帮你顺利通过的不多。特别是济源的在职建筑工人,很多人因为不了解报名流程和考试内容,最后花了钱还拿不到证,白…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬