力扣144、145、94题(二叉树递归遍历)589、590(n叉树递归遍历)
145、二叉树的后序遍历
具体实现:
1.确定递归函数的参数和返回值
参数:头结点,放节点的数组
2.确定终止条件
当前遍历的节点是空
3.单层递归逻辑
后序遍历是右左中,所以先取右节点的数值
代码:
class Solution { public List<Integer> postorderTraversal(TreeNode root) { List<Integer> res = new ArrayList<>(); postorder(root, res); return res; } void postorder(TreeNode root, List<Integer> list) { if (root == null) { return; } postorder(root.left, list); postorder(root.right, list); list.add(root.val); // 注意这一句 } }
589.n叉树的前序遍历
class Solution { List<Integer> ans=new ArrayList<>(); public List<Integer> preorder(Node root) { preOrder(root); return ans; } public void preOrder(Node root){ if(root==null){return;} ans.add(root.val); for(int i=0;i<root.children.size();i++){preorder(root.children.get(i));} } }
590.n叉树的后序遍历
class Solution { List<Integer> ans=new ArrayList<>(); public List<Integer> postorder(Node root) { postOrder(root); return ans; } public void postOrder(Node t){ if(t==null){return;} for(int i=0;i<t.children.size();i++){postorder(t.children.get(i));} ans.add(t.val); } }