leetcode非递归遍历二叉树

  • 2020 年 1 月 14 日
  • 笔记

非递归遍历二叉树

中序遍历 leecode94

左根右

var inorderTraversal = function(root) {      // 中序遍历      const number= []      const arr = []      while(true){          while(root){              arr.push(root)              root = root.left          }          if (!arr.length) {              break          }          let temp = arr.pop()          number.push(temp.val)          root = temp.right      }      return number  };    前序和后序基本差不多,后序也是当作前序来做的。注意入栈顺序

前序遍历 leetcode 144

根左右

var preorderTraversal = function(root) {      let arr =[]      let number=[]      if (!root){          return []      }      arr.push(root)      while(arr.length){          let temp = arr.pop()          number.push(temp.val)            if (temp.right){              arr.push(temp.right)          }            if (temp.left){              arr.push(temp.left)          }      }      return number  };

后序遍历 leetcode145

左右根

var postorderTraversal = function(root) {      let arr =[]      let number=[]      if (!root){          return []      }      arr.push(root)      while(arr.length){          let temp = arr.pop()          number.push(temp.val)          if (temp.left){              arr.push(temp.left)          }          if (temp.right){              arr.push(temp.right)          }        }      return number.reverse()  };