144 两两交换链表中的节点

发布时间:2024年01月23日

问题描述:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。例如[1,2,3,4]变为[2,1,4,3]

public ListNode changeNode(ListNode root)
{
ListNode pre=null;
ListNode firstChange=root;
ListNode secondChange=root.next;
ListNode res=secondChange;
ListNode res1=root;
while(firstChange!=null&&secondChange!=null)
{
if(pre!=null)
{
ListNode third=secondChange.next;
pre.next=secondChange;
secondChange.next=firstChange;
firstChange.next=third;
firstChange=third;
secondChange=third.next;
pre=firstChange;
}else
{

secondChange.next=firstChange;
firstChange.next=third;
firstChange=third;
secondChange=third.next;
pre=firstChange;
}

}
return?res==null:res1?res;
}

递归的方式求解:

public void exchangeNode(TreeNode root,TreeNode parent)
{
if(root==null||root.next==null){return;}
ListNode nextparent=root;
ListNode nextRoot=root.next.next;
ListNode second=root.next;
if(parent!=null)
{
parent.next=second;
second.next=root;
root.next=nextRoot;
}
exchangeNode(nextRoot,nextParent);
}
public TreeNode? ExchangeNode(TreeNode root)
{
ListNode res=root.next;
if(res==null){return root;}
exchangeNode(root,null);
return res;
}

文章来源:https://blog.csdn.net/qq_52299902/article/details/135773210
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。