二叉樹的映象 :
映象即就是在鏡子中所成的像
**實現:
ps:搜尋二叉樹和普通二叉樹實現方法是相同的,只是兩種建樹過程有所不同,此處實現的是搜尋二叉樹。
1.遞迴實現:
#pragma once
#include #include #include using namespace std;
template struct searchbinarytreenode
};template class searchbinarytree
~searchbinarytree()
{} bool insert(const k& key) //建樹,遞迴實現
node* parent = null;
node* cur = _root;
while (cur)
else if (cur->_key > key)
else
}//此時找到要插入的位置
if (parent->_key > key)
else
}void mirrorimage() //遞迴實現映象
void inorder() //中序遍歷
protected:
void _inorder(node* root)
_inorder(root->_left);
cout << root->_key << " ";
_inorder(root->_right);
} void _mirrorimage(node* cur) //遞迴實現映象
if (cur->_left == null && cur->_right == null)
//只要當前節點有乙個孩子不為空,即可交換
node* temp = cur->_left;
cur->_left = cur->_right;
cur->_right = temp;
if (cur->_left)
if (cur->_right)
}protected:
node* _root; //根節點
2.非遞迴實現,借助棧
void _mirrorimage(node* cur) //非遞迴實現映象
stackqq;
qq.push(cur);
while (!qq.empty()) //棧不為空時
劍指offer 19 二叉樹的映象
先序遍歷樹的每個結點,若遍歷到的結點有子節點,則交換它的兩個結點。遞迴方式 如果proot為null,則為空樹,返回 如果proot不為null,交換proot左右結點,然後分別求左右子樹的映象 非遞迴方式 步驟描述 借助棧 首先,將根節點proot入棧 第一步 當佇列未空時執行第二步 第二步 出棧...
劍指offer19 二叉樹的深度
題目描述 輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為樹的深度。解題思路 做深度優先搜尋,找出最大路徑長度 coding utf 8 class treenode def init self,x self.val x self.lef...
面試題 劍指offer19 二叉樹的映象
二叉樹的映象就是要將左子樹調整到右子樹的地方 將右子樹的位置調整到左子樹的位置 首先先序遍歷這個數的每個節點,如果遍歷到節點有子節點 就交換它的兩個子結點,當交換完所有非結點之後,就得到了樹的映象 的實現 includeusing namespace std struct binarytreenod...