计算机结构 我一直在递归坑中,这次做一个递归的主题,分享下我的递归中成长过程。
最经典的莫过于二叉树的递归
public class BinaryTree {
public class Node{
public int value;
public Node left;
public Node right;
public Node (int data){
this.value=data;
}
}
public void preOtderRecur(Node head){
if(head == null){
return ;
}
System.out.println(head.value+"");
preOtderRecur(head.left);
preOtderRecur(head.right);
}
public void inOrderRecur(Node head){
if(head == null ){
return ;
}
System.out.println(head.left);
System.out.println(head.value+"");
System.out.println(head.right);
}
public void posOrderRecur(Node head){
if(head ==null){
return;
}
System.out.println(head.left);
System.out.println(head.right);
System.out.println(head.value+"");
}
}
单链表反转
public static ListNode reverseList(ListNode head) {
//方法1
/* if(head == null || head.next ==null){
return head;
}
ListNode temp=head.next;
ListNode pre=reverseList(temp);
head.next.next=head;
head.next=null;
return pre;*/
//方法二
ListNode next;
ListNode pre=null;
while (head != null){
next =head.next;
head.next=pre;
pre=head;
head=next;
}
return pre;
}
注释:写代码 一定要注意的事情是,异常值的处理,空指针的问题
代码参考:左程云