没搞懂:1;
class TreeNode {
public:
int val;
TreeNode *left, *right;
TreeNode(int val) {
this->val = val;
this->left = this->right = NULL;
}
};
class Solution {
public:
/**
* @param root: a TreeNode, the root of the binary tree
* @return: nothing
*/
/*
*为什么这样就是错误的??????
* /
// void invertBinaryTree(TreeNode * root) {
// // write your code here
// if (root==NULL)
// return;
// if (root->left==NULL && root->right ==NULL)
// return;
// if (root->left==NULL){
// root->left=root->right;
// root->right==NULL;
// invertBinaryTree(root->left);
// }else if (root->right==NULL){
// root->right=root->left;
// root->left==NULL;
// invertBinaryTree(root->right);
// }else{
// TreeNode *left = root->left, *right = root->right;
// root->left = right; root->right = left;
// invertBinaryTree(root->left);
// invertBinaryTree(root->right);
// }
// }
/*
* 为什么这样就正确,上面就错误
*/
void invertBinaryTree(TreeNode * root) {
// write your code here
if (root==NULL)
return;
TreeNode *left = root->left, *right = root->right;
root->left = right; root->right = left;
invertBinaryTree(root->left);
invertBinaryTree(root->right);
}
};
======================
======================
======================
======================
======================
没搞懂2:可能是指针的问题。
class Solution {
public:
/**
* @param head: ListNode head is the head of the linked list
* @param m: An integer
* @param n: An integer
* @return: The head of the reversed ListNode
*/
ListNode * reverseBetween(ListNode * head, int m, int n) {
// write your code here
int count=n-m;
ListNode* start=head;
ListNode *before_begin ;
ListNode *tail=NULL;
ListNode * head11=head;
// ListNode *before_begin;
ListNode *real_begin;
for(int i=1;i<m;i++){
if(i==m-1)
before_begin = head11;
head11=head11->next;
}
real_begin=head11;
reverse_linklist2(real_begin,count,tail);
before_begin->next=real_begin;
return head;
}
void reverse_linklist2(ListNode*& head,int count,ListNode *&tail)
{
ListNode *p = head;
if(count-1==0){
tail=p->next;
p->next==NULL;
return ;
}
head = p->next;
cout<<"head=="<<head->val<<endl;
reverse_linklist2(head,count-1);
p->next->next = p;
p->next = NULL;
}
};