节点属性
@interface TreeNode:NSObject
@property(nonatomic,assign)NSInteger val;
@property(nonatomic,strong)TreeNode *left;
@property(nonatomic,strong)TreeNode *right;
@end
实现代码:
-(void)exchangeNode:(TreeNode*)node{
//判断是否存在node节点
if(node){//交换左右节点
TreeNode*temp = node.left;
node.left = node.right;
node.right = temp;
}
}
-(TreeNode*)invertTree:(TreeNode*)root{
//边界条件 递归结束或输入为空情况
if(!root){
return root;
}
//递归左右子树
[self invertTree: root.left];
[self invertTree: root.right];
//交换左右子节点
[self exchangeNode:root];
return root;
}
节点
public class TreeNode {
public var val: Int
public var left: TreeNode?
public var right: TreeNode?
public init(_ val: Int) {
self.val = val
self.left = nil
self.right = nil
}
}
实现代码:
func invertTree(_ root: TreeNode?) -> TreeNode? {
guard let root = root else {
return nil
}
invertTree(root.left)
invertTree(root.right)
exchangeNode(root)
return root;
}
func exchangeNode(_ node: TreeNode?) {
if node != nil {
let tmp = node?.left
node?.left = node?.right
node?.right = tmp
}
}
网友评论