树根到树叶将每个子节点都进行交换

使用队列(也可以使用栈,差不多一样)进行存储节点,就是数的层序遍历节点是按顺序入队,因此我们需要做的就是将队头元素出队,遴选公务员然后将他的两个子节点入队,再交换两个子节点的值就可以完成一个子节点左右孩子的交换,重复所有的节点其实就是从树根到树叶将每个子节点都进行交换,最终完成了整个树的交换,形成镜像http://lx.gongxuanwang.com/ss...

先递归到链表的末尾,然后从末尾开始两两交换。就相当于后续遍历而已
记得要先保存下来node.right节点,因为我们在递归完左边才递归右边,而递归完左边的时候,直接把node.right的指向修改了,遴选公务员如果事先不保存node.right节点的话,在递归右边传入的节点是错误的节点,因此得不到正确的答案

遍历一遍树的每个节点要花费O(N)
的时间复杂度http://lx.gongxuanwang.com/
空间复杂度:O(N),最坏情况下是一条链表,因此递归需要O(N)的栈空间

你可能感兴趣的:(android)