输入一个字符串,打印出该字符串中字符的所有排列。
你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。
示例:
输入:s = “abc”
输出:[“abc”,“acb”,“bac”,“bca”,“cab”,“cba”]
限制:
1 <= s 的长度 <= 8
/*
// Definition for a Node.
class Node {
public int val;
public Node left;
public Node right;
public Node() {}
public Node(int _val) {
val = _val;
}
public Node(int _val,Node _left,Node _right) {
val = _val;
left = _left;
right = _right;
}
};
*/
class Solution {
Node head;
Node pre;
public Node treeToDoublyList(Node root) {
if(root==null) return null;
rightToLeft(root);
head.left = pre;
pre.right = head;
return head;
}
void rightToLeft(Node curr){
if(curr==null) return ;
rightToLeft(curr.left);
if(pre==null) head =curr;
else pre.right = curr;
curr.left = pre;
pre =curr;
rightToLeft(curr.right);
}
}
复制代码