二叉樹作為樹的一種,是一種重要的資料結構,也是面試官經常考的東西。二叉樹中的面試題比較常見的題型大概有下面幾個:建立一顆二叉樹(先序,中序,後序)、遍歷一顆二叉樹(先序,中序,後序和層次遍歷)、求二叉樹中葉子節點的個數、求二叉樹的高度等等。
"binarytree.h"
#pragma once
templateclass binarytreenode
};templateclass binarytree
binarytree(const t* a,size_t size,const t& invalid)//invalid為非法值
void prevorder()//前序遍歷
//現在左樹中進行尋找
node* ret = _find(root->_left,data);
if (ret)
//再去右樹中進行尋找
return _find(root->_right,data);
} size_t _getklevel(node* root,size_t k)
if (k == 1)
return _getklevel(root->_left,k-1) + _getklevel(root->_right,k-1);//之前把k-1寫成了k--,導致程式錯誤
} size_t _depth(node* root)
return _depth(root->_left) > _depth(root->_right) ? _depth(root->_left)+1 : _depth(root->_right)+1;//三目運算子
} size_t _leafsize(node* root)
if (root->_left == null && root->_right == null)
return _leafsize(root->_left)+_leafsize(root->_right);
} size_t _size(node* root)
return _size(root->_left)+_size(root->_right)+1;
} void _postorder(node* root)
_postorder(root->_left);
_postorder(root->_right);
cout<_data<<" ";
} void _inorder(node* root)
_inorder(root->_left);
cout<_data<<" ";
_inorder(root->_right);
} void _prevorder(node* root)
cout<_data<<" ";
_prevorder(root->_left);
_prevorder(root->_right);
} node* _greatetree(const t* a,size_t size,const t& invalid,size_t& inder)//需要改變掉inder的值,所以要用引用
return root;//返回根節點
}private:
node* _root;
};
"test.cpp"
#define _crt_secure_no_warnings 1
#include using namespace std;
#include "binarytree.h"
void testbinarytree()
; int size = sizeof(arr)/sizeof(arr[0]);
binarytreet(arr,size,'#');
cout<<"前序遍歷: ";
t.prevorder();
cout<<"中序遍歷: ";
t.inorder();
cout<<"後序遍歷: ";
t.postorder();
cout<<"有多少個節點? "<>k;
cout<<"第k層節點的個數? "node* ret = t.find(2);
if (ret == null)
{ cout<<"沒找到"<_data<<" ";
cout<<"找到了"<
二叉樹遍歷遞迴實現
include include define flag int define l 0 define r 1 typedef struct tree tree tree init tree int data void destroy tree tree root void insert tree t,...
二叉樹遍歷遞迴實現
二叉樹遍歷遞迴實現 由三種遍歷順序可看出 先序遍歷遞迴實現 c void preorder node r 中序遍歷遞迴實現 c void inorder node r 後序遍歷遞迴實現 c void posorder node r 完整可執行c include include using names...
遞迴實現遍歷二叉樹
1 doctype html 2 html lang en 3 head 4 meta charset utf 8 5 title document title 6head 7 body 8 script 9var treenodes 10,2327 28 29 34 35users 36 3746...