二叉树的镜像
来源:互联网 发布:淘宝哪家店女装时尚 编辑:程序博客网 时间:2024/05/28 15:06
一、递归实现
1.前序遍历每个节点
2.如果遍历到的结点有子节点,就交换它的两个子结点
3.交换完所有非子结点的左右结点之后,就得到镜像
代码:
- void MirroRecursively(BinaryTreeNode *pNode)
- {
- if(NULL == pNode)
- return;
- if(NULL == pNode->Left && NULL == pNode->Right)
- return;
- BinaryTreeNode *pTemp = pNode->Left;
- pNode->Left = pNode->Right;
- pNode->Right = pTemp;
- if(pNode->Left)
- MirroRecursively(pNode->Left);
- if(pNode->Right)
- MirroRecursively(pNode->Right);
- }
循环
- void MirrorNonRecurively(BinaryTreeNode *pNode)
- {
- if(NULL == pNode)
- return;
- stack<BinaryTreeNode *> stackTreeNode;
- stackTreeNode.push(pNode);
- while(stackTreeNode.size())
- {
- BinaryTreeNode *pNode = stackTreeNode.top();
- stackTreeNode.pop();
- if(NULL != pNode->Left || NULL != pNode->Right)
- {
- BinaryTreeNode *pTemp = pNode->Left;
- pNode->Left = pNode->Right;
- pNode->Right = pTemp;
- }
- if(NULL != pNode->Left)
- stackTreeNode.push(pNode->Left);
- if(NULL != pNode->Right)
- stackTreeNode.push(pNode->Right);
- }
- }
阅读全文
0 0
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- [leetcode: Python]3. Longest Substring Without Repeating Characters
- Linux系统根目录结构
- git 版本回退[git reset --hard HEAD^]与查看修改点[git diff]
- 定义一个字符串类DelSameStr,从左到右对字符串中每个字符删除其后所有相同的字符,只留下第一次出现的那一个。例如,若字符串为”cocoon”,删除重复出现的字符后,其结果是字符串”con”
- 堆及topk问题
- 二叉树的镜像
- object-c 使用socket.io与服务器通讯
- html新闻单行滚动
- 实习1
- T
- leetcode 581. Shortest Unsorted Continuous Subarray
- ubuntu远程桌面无法连接的问题
- 情话交流(二)
- 51Nod 1016 水仙花数 打表