js链表的递归遍历

发布于:2024-06-01 ⋅ 阅读:(155) ⋅ 点赞:(0)

递归遍历数组

let arr = [1,2,3,4,5,6,7,8];

/**

 *

 * @param {*} data 数据源

 * @param {*} i 从几开始

 * @returns

 */

function lookBack(data, i) {

  if(data == null || !Array.isArray(data)) return console.log('请传入数组');

  if(typeof i != 'number') return

  if(data.length <= i) return console.log('结束了');

  console.log('每个的数字',data[i]);

  lookBack(data, ++i)

}

lookBack(arr, 0)


链表的递归

function Node(value) {

  this.value = value

  this.next = null

}


const a =  new Node(1)

const b =  new Node(2)

const c =  new Node(3)

const d =  new Node(4)

a.next = b

b.next = c

c.next = d

d.next = null



function lookRes(node) {

  if(node == null) return

  console.log('node', node.value);

  lookRes(node.next)

}



lookRes(a)

链表的逆置

function Node(value) {
  this.value = value
  this.next = null
}

const node1 = new Node(1)
const node2 = new Node(2)
const node3 = new Node(3)
const node4 = new Node(4)
const node5 = new Node(5)

node1.next = null
// node2.next = null
// node3.next = node4
// node4.next = node5


function reverseInput(node) {
  if(!node) return null
  if(!node.next) return node
  const newHead = reverseInput(node.next);
  node.next.next = node;
  node.next = null;
  return newHead;
}
const rootNode = reverseInput(node1)

function blackTree(root) {
  if (root === null) return
  console.log(root.value);
  return blackTree(root.next)
}
blackTree(rootNode)


网站公告

今日签到

点亮在社区的每一天
去签到