标签:
Given a binary tree, return the inorder traversal of its nodes‘ values.
For example:
Given binary tree {1,#,2,3}
,
1 2 / 3
return [1,3,2]
.
Note: Recursive solution is trivial, could you do it iteratively?
https://leetcode.com/problems/binary-tree-inorder-traversal/
树的中序遍历,把节点按照右中左的顺序塞到栈中。
因为js的数组可以放不同类型,放中间的时候放入的是val,两边放入TreeNode对象。
遇到val就直接放入结果中;遇到TreeNode节点,继续按照右中左的顺序入栈。
1 /** 2 * Definition for a binary tree node. 3 * function TreeNode(val) { 4 * this.val = val; 5 * this.left = this.right = null; 6 * } 7 */ 8 /** 9 * @param {TreeNode} root 10 * @return {number[]} 11 */ 12 var inorderTraversal = function(root) { 13 var stack = [], res = [], top; 14 if(root){ 15 if(root.right){ 16 stack.push(root.right); 17 } 18 stack.push(root.val); 19 if(root.left){ 20 stack.push(root.left); 21 } 22 } 23 24 while(stack.length !== 0){ 25 top = stack.pop(); 26 if(typeof top === "number"){ 27 res.push(top); 28 }else{ 29 if(top.right){ 30 stack.push(top.right); 31 } 32 stack.push(top.val); 33 if(top.left){ 34 stack.push(top.left); 35 } 36 } 37 } 38 return res; 39 };
[LeetCode][JavaScript]Binary Tree Inorder Traversal
标签:
原文地址:http://www.cnblogs.com/Liok3187/p/4808974.html