应用队列(也能够应用栈,差不多一样)进行存储节点,就是数的层序遍历节点是按程序入队,因而咱们须要做的就是将队头元素出队,遴选公务员而后将他的两个子节点入队,再替换两个子节点的值就能够实现一个子节点左右孩子的替换,反复所有的节点其实就是从树根到树叶将每个子节点都进行替换,最终实现了整个树的替换,造成镜像 http://lx.gongxuanwang.com/ss…
先递归到链表的开端,而后从开端开始两两替换。就相当于后续遍历而已
记得要先保留下来 node.right 节点,因为咱们在递归完右边才递归左边,而递归完右边的时候,间接把 node.right 的指向批改了,遴选公务员如果当时不保留 node.right 节点的话,在递归左边传入的节点是谬误的节点,因而得不到正确的答案
遍历一遍树的每个节点要花费 O(N)
的工夫复杂度 http://lx.gongxuanwang.com/
空间复杂度:O(N),最坏状况下是一条链表,因而递归须要 O(N)的栈空间