码迷,mamicode.com
首页 > 其他好文 > 详细

二叉树的镜像

时间:2017-10-16 21:38:48      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:二叉树   c#   镜像   

    请完成一个函数,输入一个二叉树,该函数输出它的镜像。


    解题过程:先前序遍历树的每个结点,如果遍历到结点有子结点,交换它的两个子结点。当交换完所有非叶子结点的左右子结点之后,就得到了树的镜像。


    C#实现方式:

#region 二叉树的镜像
        /// 请完成一个函数,输入一个二叉树,该函数输出它的镜像
        public static void MirrorRecursively(BinaryTreeNode pNode)
        {
            if ((pNode == null) || (pNode.left == null && pNode.right == null))
                return;

            BinaryTreeNode pTemp = pNode.left;
            pNode.left = pNode.right;
            pNode.right = pTemp;

            if (pNode.left != null)
                MirrorRecursively(pNode.left);
            if (pNode.right != null)
                MirrorRecursively(pNode.right);
        }
        #endregion

    Java实现方式:

/**
	 * 二叉树的镜像
	 * 请完成一个函数,输入一个二叉树,该函数输出它的镜像
	 * @param pNode
	 */
	public static void mirrorRecursively(BinaryTreeNode pNode) {
		if ((pNode == null) || (pNode.left == null && pNode.right == null))
			return;

		BinaryTreeNode pTemp = pNode.left;
		pNode.left = pNode.right;
		pNode.right = pTemp;

		if (pNode.left != null)
			mirrorRecursively(pNode.left);
		if (pNode.right != null)
			mirrorRecursively(pNode.right);
	}

    Python实现方式:

@staticmethod
    def mirrorRecursively(pNode):
        """
        二叉树的镜像
        请完成一个函数,输入一个二叉树,该函数输出它的镜像
        :param pNode: 
        :return: 
        """
        if (pNode == None) or (pNode.left == None and pNode.right == None):
            return
        
        pTemp = pNode.left
        pNode.left = pNode.right
        pNode.right = pTemp
        
        if pNode.left != None:
            BinaryTree.mirrorRecursively(pNode.left)
        if pNode.right != None:
            BinaryTree.mirrorRecursively(pNode.right)


本文出自 “许大树” 博客,请务必保留此出处http://abelxu.blog.51cto.com/9909959/1972899

二叉树的镜像

标签:二叉树   c#   镜像   

原文地址:http://abelxu.blog.51cto.com/9909959/1972899

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!