不要自卑,去提公升實力設計思路:網際網路行業誰技術牛誰是爹
如果文章可以帶給你能量,那是最好的事!請相信自己,加油o~
char* post為後序遍歷的順序char* in為中序遍歷的順序
首先建立乙個指標p,用迴圈在in中找到根節點
left為左子樹個數=p-in(指標差值)
right為右子樹個數(n-left-1)
之後遞迴呼叫該函式構建左右子樹
注意:要想構建二叉樹,必須知道中序遍歷,這樣才可以知道根節點,進而確定左右子樹**:有前序和後序不能夠構建二叉樹
/**
*2023年11月27日,下午21:58
*/#include
using
namespace std;
class
node
node
(char ch, node* left, node* right)};
static
int i =0;
//#號法建立二叉樹
node*
createtree
(vector<
char
> arr,node* root)
else
}return root;
}//二叉樹的前序遍歷
void
preorder
(node* root)
cout << root-
>ch <<
" ";
preorder
(root-
>left)
;preorder
(root-
>right);}
//二叉樹的中序遍歷
void
midorder
(node* root)
midorder
(root-
>left)
; cout << root-
>ch <<
" ";
midorder
(root-
>right);}
//二叉樹的後序遍歷
void
postorder
(node* root)
postorder
(root-
>left)
;postorder
(root-
>right)
; cout << root-
>ch <<
" ";
}//計算二叉樹的高度
inttreedepth
(node* root)
else
}node*
buildtree1
(char
* pre,
char
* in,
int n)
node* root =
newnode()
; root-
>ch =
*pre;
char
* p;
for(p = in; p < in + n; p++)}
int left = p - in;
//左子樹個數
int right = n - left -1;
//右子樹個數
root-
>left =
buildtree1
(pre +
1, in, left)
; root-
>right =
buildtree1
(pre + left +
1, p +
1, right)
;return root;
}node*
buildtree2
(char
* post,
char
* in,
int n)
node* root =
newnode()
; root-
>ch =
*(post + n-1)
;char
* p;
for(p = in; p < in + n; p++)}
int left = p - in;
int right = n - left -1;
root-
>left =
buildtree2
(post,in, left)
; root-
>right =
buildtree2
(post + left , p +
1, right)
;return root;
}int
main()
;char mid=
;char post=
; node* root =
newnode()
; root =
buildtree2
(post, mid,6)
; cout <<
"前序遍歷:"
;preorder
(root)
; cout << endl;
cout <<
"中序遍歷:"
;midorder
(root)
; cout << endl;
cout <<
"後序遍歷:"
;postorder
(root)
; cout << endl;
}
二叉樹先序遍歷 中序遍歷 後序遍歷
輸入二叉樹的先序遍歷序列和中序遍歷序列,輸出該二叉樹的後序遍歷序列。非建二叉樹版本 include includeusing namespace std string preord,inord void rebuild int preleft,int preright,int inleft,int ...
二叉樹先序遍歷 後序遍歷 中序遍歷
從根部 a 開始,然後開始遍歷左子樹,直接找到 b 檢視 b 有沒有左子樹,有 d,再檢視 d 有沒有子樹,沒有,d 已經是葉子,所以第二個是 d。倒回去,取中 b,第三個數是 b。檢視 b 有沒有右子樹,有 e 檢視 e 有沒有子樹,有 g 左 h 右 所有後面三個數是 egh 先查左子樹,存在繼...
二叉樹先序遍歷 中序遍歷 後序遍歷
二叉樹先序遍歷 中序遍歷 後序遍歷 include include typedef struct bitnodebitnode,bitree void visit bitnode c 先序遍歷 void preorder bitree t 中序遍歷 void inorder bitree t 後序遍...