「这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战」
中序遍历
给定一个二叉树的根节点 root ,返回它的 中序 遍历。
示例 1:
输入:root = [1,null,2,3]
输出:[1,3,2]
示例 2:
输入:root = []
输出:[]
示例 3:
输入:root = [1]
输出:[1]
示例 4:
输入:root = [1,2]
输出:[2,1]
示例 5:
输入:root = [1,null,2]
输出:[1,2]
提示:
树中节点数目在范围 [0, 100] 内 -100 <= Node.val <= 100
进阶: 递归算法很简单,你可以通过迭代算法完成吗?
题解
public List<Integer> inorderTraversal(TreeNode root) {
ArrayList<Integer> integers = new ArrayList<>();
houxu(root,integers);
return integers;
}
public static void houxu(TreeNode twoTree,List list) {
if (null == twoTree) {
return;
}
houxu(twoTree.left,list);
list.add(twoTree.val);
houxu(twoTree.right,list);
}
后序遍历
给定一个二叉树,返回它的 后序 遍历。
示例:
输入: [1,null,2,3]
1
\
2
/
3
输出: [3,2,1] 进阶: 递归算法很简单,你可以通过迭代算法完成吗?
题解
public List<Integer> postorderTraversal(TreeNode root) {
ArrayList<Integer> integers = new ArrayList<>();
houxu(root,integers);
return integers;
}
public static void houxu(TreeNode twoTree,List list) {
if (null == twoTree) {
return;
}
houxu(twoTree.left,list);
houxu(twoTree.right,list);
list.add(twoTree.val);
}
前序描述
给你二叉树的根节点 root ,返回它节点值的 前序 遍历。
示例 1:
输入:root = [1,null,2,3]
输出:[1,2,3]
示例 2:
输入:root = []
输出:[]
示例 3:
输入:root = [1]
输出:[1]
示例 4:
输入:root = [1,2]
输出:[1,2]
示例 5:
输入:root = [1,null,2]
输出:[1,2]
提示:
树中节点数目在范围 [0, 100] 内 -100 <= Node.val <= 100
进阶:递归算法很简单,你可以通过迭代算法完成吗?
题解
1.使用迭代. 将需要迭代的代码抽出来(当前节点的值放入数组,读取左节点和右节点)
2.先判断当前节点的值是否为null
3.将左节点放入迭代中.
4.将右节点放入迭代中.
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> list = new ArrayList<Integer>();
pre(root,list);
return list;
}
public void pre(TreeNode node , List list) {
if (null == node) {
return ;
}
list.add(node.val);
pre(node.left,list);
pre(node.right,list);
}