「这是我参与11月更文挑战的第6天,活动详情查看:2021最后一次更文挑战」。
二叉树是什么
🌲树也是计算机中的一种常见结构,想像一棵圣诞树,最底部是一根树干,树干顶部开始无限分叉。二叉树呢,就是树干延伸的时候,每个根节点都有且最多只有两个节点,无限延伸。
二叉树的特点
- 每个点都有两个子节点
- 左节点比父节点小,右节点比父节点大
- 只有一个节点也分左右
leetcode-144.二叉树的前序遍历
给你二叉树的根节点 root ,返回它节点值的 前序 遍历。
前序遍历规则
从根节点开始,先遍历左节点,后遍历右节点
代码如下
var preorderTraversal = function(root) {
if (!root) return [];
const result = [];
result.push(result.val);
result.push(...preorderTraversal(root.left));
result.push(...preorderTraversal(root.right));
return result;
};
94.二叉树的中序遍历
给定一个二叉树的根节点 root ,返回它的 中序 遍历。
中序遍历规则
从根点开始,遍历顺序依次为左节点、根节点、右节点
代码如下
var inorderTraversal = function (root) {
const result = [];
const inorder = (root) => {
if (!root) return;
inorder(root.left);
result.push(root.val);
inorder(root.right);
return result;
};
inorder(root);
return result;
};
leetcode-145.二叉树的后序遍历
给定一个二叉树的根节点 root ,返回它的 后序 遍历。
后序遍历规则
从根点开始,遍历顺序依次为左节点、右节点、根节点
代码如下
var postorderTraversal = function (root) {
const result = [];
const postorder = (root) => {
if (!root) return;
postorder(root.left);
postorder(root.right);
result.push(root.val);
};
postorder(root);
return result;
};
总结
我们可以用此三道题来熟练常见的代码组织之中的递归操作,非常适合代码小白来夯实代码递归基础。同时递归的方案也非常的简单。
此题除了递归方案之外还可以使用“迭代”的方案来实现,一般来说,递归是维护一个隐式的栈,而迭代是定义一个显式的栈,后面找时间会专门实现一篇迭代法的相关内容。
本次以上内容大家都看明白了么,自己也要上手试试哦~
ps:创作不易,求赞求关注思密达~~~
其他相关
下一道二叉树 226.翻转二叉树