题解 | #二叉树的前序遍历#

二叉树的前序遍历

https://www.nowcoder.com/practice/5e2135f4d2b14eb8a5b06fab4c938635

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 *   public TreeNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param root TreeNode类 
     * @return int整型一维数组
     */
    public int recursivelyPreorder(TreeNode vroot, int[] temp, int i){
        temp[i++] = vroot.val;
        if(vroot.left!=null){
            i = recursivelyPreorder(vroot.left, temp, i);
        }
        if(vroot.right!=null){
            i = recursivelyPreorder(vroot.right, temp, i);
        }
        return i;
    }
    
    public int[] preorderTraversal (TreeNode root) {
        // write code here
        if(root==null){
            int[] treeList = new int[0];
            return treeList;
        }

        int i=0;
        int[] temp = new int[100];
        
        i = recursivelyPreorder(root, temp, i);
        System.out.print(i);
        int[] treeList = new int[i];
        for(int j=0;j<i;j++){
            treeList[j] = temp[j];
        }

        return treeList;
    }
}

摸索了好久,终于递归出来了

总结几个心得:

1,递归不一定需要返回值

2,递归需要把子问题实现,然后再确定递归停止条件

全部评论
除了使用临时数组,还可以使用List<integer> list = new ArrayList();可变大小的数组进行存放:list.add(vroot.val); list.get(i);</integer>
点赞 回复 分享
发布于 2023-09-13 12:43 广东

相关推荐

牛客279957775号:铁暗恋
点赞 评论 收藏
分享
11-18 15:57
门头沟学院 Java
最终归宿是测开:这个重邮的大佬在重邮很有名的,他就喜欢打92的脸,越有人质疑他,他越觉得爽😂
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务