­

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()  };