标签:node Binary 144 遍历 return Preorder res root stack
二叉树的先序遍历。题意很简单,举个例子,如下图的这个二叉树,需要输出遍历node的结果是
Example:
Input:[1,null,2,3]
1 \ 2 / 3 Output:[1,2,3]
二叉树的遍历有多种方式,此题是要求用先序遍历。我自己总结的先序遍历的特点是中 - 左 - 右。即如果只有一个根节点和两个子节点的情形下(比如[1, 2, 3]),输出结果应该也是[1, 2, 3]。这题迭代和递归都需要掌握,其中迭代是用到了BFS的思想,层层遍历。遍历的时候会用到栈,所以放进栈的时候记得要逆向,先输出的node需要先被放进去。代码如下,
1 /** 2 * @param {TreeNode} root 3 * @return {number[]} 4 */ 5 var preorderTraversal = function(root) { 6 // corner case 7 if (!root) return []; 8 9 // normal case 10 let result = []; 11 // let stack = [root]; 12 let stack = []; 13 stack.push(root); 14 while (stack.length) { 15 var node = stack.pop(); 16 result.push(node.val); 17 if (node.right) stack.push(node.right); 18 if (node.left) stack.push(node.left); 19 } 20 return result; 21 };
1 /** 2 * @param {TreeNode} root 3 * @return {number[]} 4 */ 5 var preorderTraversal = function(root) { 6 let res = []; 7 if (root === null) { 8 return res; 9 } 10 helper(res, root); 11 return res; 12 }; 13 14 var helper = function(res, root) { 15 if (root === null) return; 16 res.push(root.val); 17 helper(res, root.left); 18 helper(res, root.right); 19 };
标签:node,Binary,144,遍历,return,Preorder,res,root,stack 来源: https://www.cnblogs.com/aaronliu1991/p/12048541.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。