Java创建并遍历N叉树(前序遍历)

力扣  title589:N叉树的前序遍历

给定一个 n 叉树的根节点  root ,返回 其节点值的 前序遍历 。

n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例)。

思路:

1.初始化时,使用列表存储子节点。

2. 遍历时,使用栈存储节点,比如根节点的子节点,按照4,2,3的顺序入栈,则出栈时为3,2,4。值为③的节点,需要让6,5依次入栈,则出栈时是5,6。

import java.util.ArrayList;
import java.util.List;
import java.util.Stack;public class TreeDemo {public static void main(String[] args) {Node root=createTree();List<Integer> result=preorder(root);System.out.println(result);}//创建N叉树public static Node createTree(){Node root=new Node(1);  //创建根节点Node node2=new Node(3);Node node3=new Node(2);Node node4=new Node(4);List<Node> list1=new ArrayList<>();list1.add(node2);list1.add(node3);list1.add(node4);root.children=list1;Node node5=new Node(5);Node node6=new Node(6);List<Node> list2=new ArrayList<>();list2.add(node5);list2.add(node6);node2.children=list2;return root;}//前序遍历N叉树public static List<Integer> preorder(Node root) {List<Integer> result=new ArrayList<>();Stack<Node> stack=new Stack();if(root!=null){stack.push(root);}while (!stack.empty()){Node node=stack.pop();result.add(node.val);//node.children是一个节点列表,里面存储了节点的子节点while (node.children!=null){int index=node.children.size();index--;if(index<0) break;  //防止角标溢出//利用index--,使得节点倒序入栈stack.push(node.children.get(index));node.children.remove(index);}}return result;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/5922.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AtCoder Beginner Contest 351 E题 Jump Distance Sum

E题&#xff1a;Jump Distance Sum 标签&#xff1a;思维题意&#xff1a;在坐标平面上&#xff0c;有 N N N个点 P 1 , P 2 , … , P N P_1,P_2,…,P_N P1​,P2​,…,PN​&#xff0c;其中点 P i P_i Pi​的坐标为 ( X i , Y i ) (X_i,Y_i) (Xi​,Yi​)。两点 A A A与 B B B之…

[ACTF2020 新生赛]BackupFile 1 [极客大挑战 2019]BuyFlag 1 [护网杯 2018]easy_tornado 1

目录 [ACTF2020 新生赛]BackupFile 1 1.打开页面&#xff0c;叫我们去找源文件 2.想到用disearch扫描&#xff0c;发现源文件index.php.bak 3.访问这个文件&#xff0c;下载一个文件&#xff0c;用记事本打开 4.翻译php代码 5.构造payload url/?key123&#xff0c;得到fl…

在不同操作系统上自动生成Protocol Buffers的Java语言包的方法2

在《在不同操作系统上自动生成Protocol Buffers的Java语言包的方法》中我们使用了protobuf-maven-plugin插件来给Proto文件生成Java语言版代码。本文我们将使用一种更简单的插件来完成这个功能。 本文实验的操作系统和代码库都和《在不同操作系统上自动生成Protocol Buffers的J…

如何配置和使用Apollo的component里的plugin

关于如何使用Apollo的Component里的plugin&#xff0c;在Apollo的文档里只有如果和开发的说明却没有找到一个清楚完整说明怎么把plugin跑起来的说明&#xff0c;例如我想把lidar_detection_filter按我们的需求对目标过滤算法作修改然后编译完后&#xff0c;执行 cyber_launch …

IoTDB 入门教程④——数据库用户管理和用户权限管理

文章目录 一、前文二、修改ROOT密码三、用户登录四、查看用户列表五、创建用户六、删除用户七、修改用户八、查看指定用户的权限范围九、添加指定用户的权限范围十、删除指定用户的权限范围十一、参考 一、前文 IoTDB入门教程——导读 本文主要讲述数据库用户管理和用户权限管理…

【七十三】【算法分析与设计】516. 最长回文子序列,二叉树,329. 矩阵中的最长递增路径,记忆化递归填表

516. 最长回文子序列 给你一个字符串 s &#xff0c;找出其中最长的回文子序列&#xff0c;并返回该序列的长度。 子序列定义为&#xff1a;不改变剩余字符顺序的情况下&#xff0c;删除某些字符或者不删除任何字符形成的一个序列。 示例 1&#xff1a; 输入&#xff1a;s &qu…

《QT实用小工具·五十一》带动画的 CheckBox

1、概述 源码放在文章末尾 该项目实现了带动画效果的多选框&#xff0c;鼠标放在上面或者选中都会呈现炫酷的动画效果&#xff0c;demo演示如下&#xff1a; 项目部分代码如下所示&#xff1a; #ifndef LINEARCHECKBOX_H #define LINEARCHECKBOX_H#include <QCheckBox> …

2024年北京高校数学建模校际联赛竞赛赛题浅析

一图流&#xff1a; 题目复杂性技术需求数据处理主要难点A题&#xff1a;格陵兰入海冰川3气象学、物理学、环境科学时间序列分析、空间数据处理多学科集成、预测模型的准确性和策略制定B题&#xff1a;铁道线路动态检测数据分析1数据科学、机器学习、信号处理实时数据流处理、异…

Vue Json stringify() 转换和过滤

参考 JS/TS 对象转成JSON string 字符串 过滤其中的部分项 allMenu.value.forEach((_item) > {console.log(JSON.stringify(_item, [menuId]))})console.log(JSON.stringify(_item, [menuId, menuName])) 一下方法需要进一步核对&#xff0c;没有调试通过 console.log(JS…

OPPO手机支持深度测试+免深度测试解锁BL+ROOT权限机型整理-2024年3月更新

绿厂OPPO手机线上线下卖的都很不错&#xff0c;目前市场份额十分巨大&#xff0c;用户自然也非常多&#xff0c;而近期ROM乐园后台受到很多关于OPPO手机的私信&#xff0c;咨询哪些机型支持解锁BL&#xff0c;ROOT刷机&#xff0c;今天ROM乐园正式盘点当前市场上可以解BL刷root…

Mysql-黑马

Mysql-黑马 编写规范&#xff1a;## 一级1. 二级三级 1.Mysql概述 数据库概念mysql数据仓库 cmd启动和停止 net start mysql180 net stop mysql180备注&#xff1a;其中的mysql180是服务名 客户端连接 远程连接数据仓库 -h 主机号 -P端口号 mysql [-h 127.0.0.1] [-P 33…

1083 是否存在相等的差

solution 输出的是重复的差值&#xff0c;而非全部差值 #include<iostream> #include<algorithm> using namespace std; const int maxn 1e4 10; int flag[maxn] {0}; int main(){int n, x;scanf("%d", &n);for(int i 1; i < n; i){scanf(&…

python 如何判断是函数还是方法 (function or method)

示例代码&#xff1a; def test_fn():passclass Test(object):staticmethoddef s_fn():passclassmethoddef c_fn(cls):passdef my_fn(self):pass如何判断是可调用的方法&#xff1a; hasattr(test_fn, __call__) # true hasattr(Test.s_fn, __call__) # true hasattr(Test.c…

一文全面了解 wxWidgets 布局器(Sizers)

目录 Sizers背后的理念 共同特征 最小大小 边框 对齐方式 伸缩因子 使用 Sizer 隐藏控件 wxBoxSizer wxStaticBoxSizer wxGridSizer wxFlexGridSizer 布局器&#xff08;Sizers&#xff09;&#xff0c;由wxWidgets类层次结构中的wxSizer类及其派生类表示&#xff0…

个人博客建设必备:精选域名和主机的终极攻略

本文目录 &#x1f30f;引言&#x1f30f;域名的选择&#x1f315;域名的重要性品牌识别营销和宣传可访问性和易记性信任和权威感搜索引擎优化&#xff08;SEO&#xff09;未来的灵活性和扩展性保护品牌 &#x1f315;如何选择域名&#x1f315;工具与资源分享国内的主流域名注…

机器学习——决策树基础

第1关&#xff1a;创建数据集 def createDataSet():dataSet [[1, 1, yes],[1, 1, yes],[1, 0, no],[0, 1, no],[0, 1, no]]labels [no surfacing,flippers]return dataSet, labels ####请在此处输入代码#### myDat, t createDataSet() ####################### print(myDat…

springboot 自动配置源码解读

什么是自动装配 当我们程序依赖第三方功能组件时&#xff0c;不需要手动将这些组件类加载到IOC容器中。例如 当程序需要用到redis时&#xff0c;在pom.xml文件中引入依赖&#xff0c;然后使用依赖注入的方式直接从IOC容器中拿到相应RedisTemplate实例。 SpringBootApplication …

LeetCode 98.验证二叉搜索树

题目描述 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左 子树 只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 示例 1&#xff…

如何在低代码平台中引用 JavaScript ?

引言 在当今快速发展的数字化时代&#xff0c;企业对业务应用的需求日益复杂且多元。低代码开发平台作为一个创新的解决方案&#xff0c;以直观易用的设计理念&#xff0c;打破了传统的编程壁垒&#xff0c;让非技术人员也能轻松构建功能完备的Web应用程序&#xff0c;无需深入…

Linux搭建mysql环境

搭建 MySQL 环境 1、使用 wget 下载安装包&#xff0c;下载到 opt 目录中 wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm2、安装 MySQL 公钥 rpm -i mysql57-community-release-el7-10.noarch.rpmrpm --import https://repo.mysql.com/RPM-GP…