分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

中序遍历二叉树(js)

发布时间:2023-09-06 02:12责任编辑:郭大石关键词:js遍历

leetcode上刷到一题中序遍历一颗二叉树的题,两种方法,使用递归或者栈

原题及解答:https://leetcode.com/problems/binary-tree-inorder-traversal/discuss/164579/recursion-and-stack-solve-the-problem-by-js

中序遍历:按照左,根,右的顺序遍历二叉树

使用栈:先将根节点入栈,找到所有左节点入栈,直到没有左节点为止,然后出栈存入结果数组,每出一个,对比该根节点的右子节点是否有左节点,若有则入栈,否则继续出栈

代码如下

var inorderTraversal=function(root){ ???????var ?res=[]; ???????//栈 ?????????var s=[]; ???????var p = root; ???????????while (p || s.length>0) { ???????????//直至左节点为空,即没有左节点为止 ???????????while (p) { ???????????????s.push(p); ???????????????p = p.left; ???????????} ???????????//出栈,存放根节点 ???????????p = s.pop(); ???????????res.push(p.val); ???????????p = p.right; ???????} ???????return res;}

递归:

var inorderTraversal = function(root) { ???var res=[]; ???inorder(root,res); ???return res;};//按照左 根 右顺序遍历function inorder(root,res){ ???if(!root) return ; ???inorder(root.left,res); ???res.push(root.val); ???inorder(root.right,res);}

中序遍历二叉树(js)

原文地址:https://www.cnblogs.com/xingguozhiming/p/9557597.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved