js链表的递归遍历

递归遍历数组

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)

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值