本文共 2373 字,大约阅读时间需要 7 分钟。
链表中环的入口结点
一个链表中包含环,请找出该链表的环的入口结点。/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode EntryNodeOfLoop(ListNode pHead) { if(pHead == null || pHead.next == null) return null; ListNode p1 = pHead; ListNode p2 = pHead; while(p2 != null && p2.next != null ){ p1 = p1.next; p2 = p2.next.next; if(p1 == p2){ p2 = pHead; while(p1 != p2){ p1 = p1.next; p2 = p2.next; } if(p1 == p2) return p1; } } return null; }}
删除链表中重复的结点
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode deleteDuplication(ListNode pHead) { ListNode result; ListNode temp=pHead; ListNode index=new ListNode(1); index.next=pHead; result=index; while(temp!=null){ if(temp.next!=null&&temp.next.val==temp.val){ while(temp.next!=null&&temp.next.val==temp.val){ temp=temp.next; } temp=temp.next; index.next=temp; } else{ index=index.next; temp=temp.next; } } return result.next; }}
二叉树的下一个结点
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。/*public class TreeLinkNode { int val; TreeLinkNode left = null; TreeLinkNode right = null; TreeLinkNode next = null; TreeLinkNode(int val) { this.val = val; }}*/public class Solution { public TreeLinkNode GetNext(TreeLinkNode pNode) { if(pNode==null)return null; if(pNode.right!=null) { pNode=pNode.right; while(pNode.left!=null) { pNode=pNode.left; }return pNode; } while(pNode.next!=null) { if(pNode.next.left==pNode)return pNode.next; pNode=pNode.next; } return null; }}
源代码:
转载地址:http://shrin.baihongyu.com/