12 二叉樹常用演算法

2021-10-04 05:46:03 字數 2968 閱讀 1971

struct mystruct

btree,

*pbtree;

//前序遍歷

void

qian

(mystruct *proot)

if(proot-

>pright !=

nullptr)}

}

//中序遍歷

void

zhong

(mystruct *proot)

cout <<

" "<< proot-

>nodedata;

if(proot-

>pright !=

nullptr)}

}

//非遞迴中序遍歷

void

stackzhong

(mystruct *proot)

//遍歷棧中的元素if(

!mystack.

empty()

)}}

void

hou(mystruct *proot)

if(proot-

>pright !=

nullptr

) cout <<

" "<< proot-

>nodedata;

}}

//插入節點

mystruct *

insertnode

(mystruct *proot,

int num)

//如果被存放的值小於根節點,則向左遍歷,遞迴遍歷

else

if(num <= proot-

>nodedata)

//如果被存放的值大於根節點,則向右遍歷,遞迴遍歷

else

return proot;

}

//尋找二叉樹中最大值

//二叉樹左邊小,右邊大,每一顆子二叉樹也滿足該要求

intfindmax

(mystruct *proot)

//如果深度不為0

if(top >0)

//若左節點小於最大值,則判斷右節點

pcurr = pcurr-

>pright;}}

return max;

}

//葉子節點

intgetyenum

(mystruct *proot)

if(proot-

>pleft ==

nullptr

&& proot-

>pright ==

nullptr

)//遞迴呼叫

left =

getyenum

(proot-

>pleft)

; right =

getyenum

(proot-

>pright)

;return left + right;

}

//獲取樹的高度

intgetheight

(mystruct *proot)

left =

getheight

(proot-

>pleft)

; right =

getheight

(proot-

>pright)

; height = left > right ? left : right;

return height +1;

}

//獲取某個值的父節點

intgetba

(mystruct *proot,

int num)

//如果當前節點的左節點不為空,且當前節點的左節點為num,則返回當前節點

if(proot-

>pleft !=

nullptr

&& proot-

>pleft-

>nodedata == num)

//如果當前節點的右節點不為空,且當前節點的右節點為num,則返回當前節點

if(proot-

>pright !=

nullptr

&& proot-

>pright-

>nodedata == num)

//呼叫遞迴

//遞迴遍歷,直至找到

getba

(proot-

>pleft, num)

;getba

(proot-

>pright, num)

;}

//返回父節點的左節點,即左兄弟

intgetleft

(mystruct *proot,

int num)

if(proot-

>pright && proot-

>pright-

>nodedata == num)

}getleft

(proot-

>pleft,num)

;getleft

(proot-

>pright,num)

;}

// 二叉樹.cpp : 此檔案包含 "main" 函式。程式執行將在此處開始並結束。

//#include

"pch.h"

#include

#include

#include

using

namespace std;

struct mystruct

btree,

*pbtree;

intmain()

二叉樹12 二叉樹的映象

題目 操作給定的二叉樹,將其變換為源二叉樹的映象。輸入描述 思路 首先要理解業務邏輯,何為映象?所謂映象就是對於任何乙個結點,將其左右子樹進行交換即可。對於一棵以root為根結點的二叉樹,要將其映象,首先將其左右子樹 root.left為根的子樹 和 root.right為根的子樹 進行映象,然後將...

二叉樹演算法

include include include define elementtype int node structure constructor typedef struct bt binarytreenode,btroot function declear inorder btroot root...

二叉樹演算法

二叉樹的遍歷演算法 1.先序遍歷 對每乙個節點將其看作根節點按照根左右的順序進行遍歷。示例 void preordertree node root 先序遍歷二叉樹 return 2.中序遍歷 對每乙個節點將其看作根節點按照左根右的順序進行便利。示例 void inordertree node roo...