美文网首页
二叉树的中序遍历

二叉树的中序遍历

作者: 是小张啊啊 | 来源:发表于2020-09-14 16:25 被阅读0次

题目描述:

给定一个二叉树,返回它的中序 遍历

示例: image.png

如图所示:二叉树中序遍历顺序为 A B C D E F G H I


image.png

解题思路:
1.存在左叶子节点:根节点更新为左叶子节点,将根节点存储在栈中,用于查找的节点左右叶子节点都不存在时获取新的根节点;
2.存在右叶子节点:将根节点的值压栈,并将根节点更新为右叶子节点。
3.没有左右叶子节点:将此时根节点的值压栈,获取新的根节点并将该新的根节点的左叶子节点赋值为null。

实现代码:

let inorderTraversal = root => {
      let res = [];
      let stack = [];
      while (root || stack.length) {
        if (root.left) {
          stack.push(root);
          root = root.left;
        } else if (!root.left && !root.right) {
          res.push(root.val);
          root = stack.pop();
          root && (root.left = null)
        } else if (root.right) {
          res.push(root.val);
          root = root.right;
        }
      }
      return res
    }

相关文章

网友评论

      本文标题:二叉树的中序遍历

      本文链接:https://www.haomeiwen.com/subject/kpezektx.html