zoukankan      html  css  js  c++  java
  • 面试题01 二叉树的镜像 【树】[ water ]

    题目:输入一颗二叉搜索树,将该树转换为它的镜像,即在转换后的二叉搜索树中,左子树的结点都大于右子树的结点。用递归和循环两种方法完成树的镜像转换。 

    例如输入:

         8
        /  \
      6      10
     /\       /\
    5  7    9   11

    输出:

          8
        /  \
      10    6
     /\      /\
    11  9  7  5

    1 该问题实质上是将二叉树的左右两子树,进行交换。
    求二叉树的镜像
    实现方法:
    方法(1)
     : 前序遍历,交换左右子树,递归遍历    [ 这里采用 ]
    方法(2)  : 使用非递归的方法,遍历左右子树

    #include <iostream>
    #include <string>
    #include <cstring>
    #include <cstdlib>
    #include <cstdio>
    #include <cmath>
    #include <vector>
    #include <stack>
    #include <deque>
    #include <queue>
    #include <bitset>
    #include <list>
    #include <map>
    #include <set>
    #include <iterator>
    #include <algorithm>
    #include <functional>
    #include <utility>
    #include <sstream>
    #include <climits>
    #include <cassert>
    #define BUG puts("here!!!");
    
    using namespace std;
    struct Node {
    	int value;
    	Node* lchild;
    	Node* rchild;
    };
    void mirror(Node* pn) {
    	if(pn == NULL) return;
    	else {
    		Node* tmp = pn->lchild;
    		pn->lchild = pn->rchild;
    		pn->rchild = tmp;
    		if(pn->lchild) {
    			mirror(pn->lchild);
    		}
    		if(pn->rchild) {
    			mirror(pn->rchild);
    		}
    	}
    }
    int main() {
    	return 0;
    }
    

  • 相关阅读:
    NSBundle使用:获取文件路径
    安装git后遇到的问题及解决
    (转)iPhone 字体显示效果大全
    iPhone开发小技巧
    协议与委托简单实例讲解(转)
    Zoom Me FAQ
    Show Desktop Pro FAQ
    The Startup Manager FAQ
    Finder Quick Menu FAQ
    The App Locker FAQ
  • 原文地址:https://www.cnblogs.com/robbychan/p/3787175.html
Copyright © 2011-2022 走看看