前端算法-前序遍历二叉树

简介: 前端算法-前序遍历二叉树

题目

给你二叉树的根节点 root ,返回它节点值的前序遍历。

输入: root = [1,null,2,3]
输出: [1,2,3]

思路一

我们这里使用递归的方式进行实现,首先声明一个res空数组,用户于接收遍历后的结果值,我们在声明一个preOrder递归函数,这个函数接受二个参数,一个是root参数,一个是res空数组,用于接受结果值,在preOrder函数中,我们先判断一下当前的root参数是不是为空,如果为空则直接return出来,这个也是递归终止的条件,然后在将当前root.val参数通过push方法添加到res数组中,然后进行在将root的左节点和右节点分别使用preOrder函数进行调用,第二个参数都传res数组,最后在将res数组返回出去即可

var preorderTraversal = function (root) {
    const res = [];
    preOrder(root, res);
    return res;
};
var preOrder = function (root, res) {
    if (!root) return;
    res.push(root.val);
    preOrder(root.left, res);
    preOrder(root.right, res);
}

思路二

我们这里使用了栈的方法,我所认为的是所有可以通过递归解决的事情,也可以通过栈的方式进行解决,我们这里声明两个数组,分别为stack和res,这两个都是空数组,然后我们使用循环,循环条件为当前root参数不为null或者stack栈的长度大于0,在循环中在进行二次循环,循环条件为当前的root参数不为null,在二次循环中,我们将root的cal参数使用push方法添加到res数组中,同时也使用push方法将root参数添加到stack数组中,然后将root的左节点赋值给root参数,然后我们会不断的进入root参数的左节点,并通过循环的方式将经过的节点都存储起来,当我们遇到root参数等于null的时候循环会终止,终止之后我们使用pop方法将当前stack数组中的末尾节点并获取到该节点的右节点赋值给root参数,然后就会进入下一次循环,重复这个过程就可以找出前序遍历,最后将res数组返回出去

var preorderTraversal = function(root) {
    const stack = [];
    const res = [];
    while(root !== null || stack.length > 0){
        while(root !== null){
            res.push(root.val);
            stack.push(root);
            root = root.left;
        }
        root = stack.pop().right;
    }
    return res;
};


相关文章
|
8天前
|
移动开发 算法 前端开发
前端算法之堆排序
前端算法之堆排序
14 1
|
8天前
|
算法 前端开发
前端算法之快速排序
前端算法之快速排序
13 0
|
8天前
|
算法 前端开发 搜索推荐
前端算法之归并排序
前端算法之归并排序
12 0
|
8天前
|
算法 前端开发
前端算法之基数排序
前端算法之基数排序
10 1
|
8天前
|
算法 前端开发 搜索推荐
前端算法之桶排序
前端算法之桶排序
6 1
|
8天前
|
存储 算法 前端开发
前端算法之计数排序
前端算法之计数排序
11 1
|
8天前
|
算法 前端开发 搜索推荐
前端算法之希尔排序
前端算法之希尔排序
4 0
|
9月前
|
Web App开发 前端开发 JavaScript
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-fiber解决了什么问题
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-fiber解决了什么问题
98 0
|
9月前
|
前端开发 定位技术
前端学习笔记202305学习笔记第二十三天-地图单线程配置
前端学习笔记202305学习笔记第二十三天-地图单线程配置
68 0
前端学习笔记202305学习笔记第二十三天-地图单线程配置
|
9月前
|
前端开发 API
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-react-redux的工作流程
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-react-redux的工作流程
56 0