ZBLOG

二叉树中序遍历js

二叉树的中序遍历可以使用递归或者迭代的方式实现。下面是使用JavaScript实现二叉树中序遍历的示例代码:

  1. // 定义二叉树节点
  2. class TreeNode {
  3. constructor(val, left, right) {
  4. this.val = val;
  5. this.left = left;
  6. this.right = right;
  7. }
  8. }
  9. // 中序遍历(递归)
  10. function inorderTraversalRecursive(root) {
  11. const result = [];
  12. function traverse(node) {
  13. if (node === null) return;
  14. traverse(node.left); // 遍历左子树
  15. result.push(node.val); // 处理当前节点
  16. traverse(node.right); // 遍历右子树
  17. }
  18. traverse(root);
  19. return result;
  20. }
  21. // 中序遍历(迭代)
  22. function inorderTraversalIterative(root) {
  23. const result = [];
  24. const stack = [];
  25. let curr = root;
  26. while (curr !== null || stack.length > 0) {
  27. while (curr !== null) { // 将当前节点及其左子节点依次入栈
  28. stack.push(curr);
  29. curr = curr.left;
  30. }
  31. curr = stack.pop(); // 出栈并处理当前节点
  32. result.push(curr.val);
  33. curr = curr.right; // 处理右子节点
  34. }
  35. return result;
  36. }
  37. // 创建一个二叉树作为测试数据
  38. const root = new TreeNode(1);
  39. root.left = new TreeNode(2);
  40. root.right = new TreeNode(3);
  41. root.left.left = new TreeNode(4);
  42. root.left.right= new TreeNode(5);
  43. console.log(inorderTraversalRecursive(root)); // 使用递归方式中序遍历输出 [4, 2, 5, 1, 3]
  44. console.log(inorderTraversalIterative(root)); // 使用迭代方式中序遍历输出 [4, 2, 5, 1, 3]

以上代码定义了一个二叉树节点类 TreeNode,然后分别实现了递归和迭代的方式进行二叉树的中序遍历。使用给定的测试数据进行验证,并打印出结果。

递归版本的中序遍历通过先访问左子树,然后处理当前节点,最后再访问右子树来实现。迭代版本则利用一个辅助栈来模拟递归过程,首先将当前节点及其左子节点入栈,然后出栈并处理当前节点,在处理完当前节点之后再处理右子节点。最终都会得到按照中序遍历顺序排列的结果数组。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=12963

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?