编辑代码

function diagonalSnakeTraverse(matrix) {
    if (!matrix || matrix.length === 0) return [];

    let m = matrix.length, n = matrix[0].length;
    let result = [];

    for (let d = 0; d < m + n - 1; d++) {
        let intermediate = [];
        let row = d < n ? 0 : d - n + 1;
        let col = d < n ? d : n - 1;

        while (row < m && col >= 0) {
            intermediate.push(matrix[row][col]);
            row++;
            col--;
        }

        if (d % 2 == 0) {
            intermediate.reverse();
        }

        result.push(...intermediate);
    }
    
    return result;
}

// 测试
const matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
    [11, 12, 13]
];

console.log(diagonalSnakeTraverse(matrix));
// 输出: [1, 2, 4, 7, 5, 3, 6, 8, 11, 12, 9, 13]