hello大家好呀,本博客目的在于记录暑假学习打卡,后续会整理成一个专栏,主要打算在暑假学习完数据结构,因此会发一些相关的数据结构实现的博客和一些刷的题,个人学习使用,也希望大家多多支持,有不足之处也请指出,谢谢大家。
一,力扣144,二叉树的前序遍历
前序遍历指在二叉树中,先遍历中间节点,再遍历左子节点,最后遍历右子节点。
二叉树的遍历通常采用递归的方法,本题由于要求返回LIst所有需要我们对常规的遍历做一些修改
这里给出两种解答
法一
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
List<Integer> list=new ArrayList();
public List<Integer> preorderTraversal(TreeNode root) {
if(root==null) return list;
list.add(root.val);
preorderTraversal(root.left);
preorderTraversal(root.right);
return list;
}
}
class Solution {
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> list=new ArrayList();
if(root==null) return list;
list.add(root.val);
List Left=preorderTraversal(root.left);
list.addAll(Left);
List Right=preorderTraversal(root.right);
list.addAll(Right);
return list;
}
}
二,力扣94,二叉树中序遍历
中序遍历指在二叉树中,先遍历左子节点,再遍历中间节点,最后遍历右子节点
于前端遍历相似,只需改变一行代码的位置
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> list = new ArrayList();
if (root == null)
return list;
List Left = inorderTraversal(root.left);
list.addAll(Left);
list.add(root.val);
List Right = inorderTraversal(root.right);
list.addAll(Right);
return list;
}
}
法二
class Solution {
List<Integer> list = new ArrayList();
public List<Integer> inorderTraversal(TreeNode root) {
if (root == null)
return list;
inorderTraversal(root.left);
list.add(root.val);
inorderTraversal(root.right);
return list;
}
}
三,力扣145,二叉树后序遍历
后序遍历指在二叉树中,先遍历左子节点,再遍历右节点,最后遍历中间节点
同样动一行代码
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
List<Integer> list = new ArrayList();
public List<Integer> postorderTraversal(TreeNode root) {
if (root == null)
return list;
postorderTraversal(root.left);
postorderTraversal(root.right);
list.add(root.val);
return list;
}
}
法二
class Solution {
public List<Integer> postorderTraversal(TreeNode root) {
List<Integer> list=new ArrayList();
if(root==null) return list;
List Left=postorderTraversal(root.left);
list.addAll(Left);
List Right=postorderTraversal(root.right);
list.addAll(Right);
list.add(root.val);
return list;
}
}
好了,本期博客就到这里,今天的博客有点水,因为有点事耽误了,但是后面还会出详细的介绍二叉树的博客,还请大家多多支持