求一棵二叉樹高度 C 非遞迴實現

2021-10-12 10:39:39 字數 1080 閱讀 7049

問題:僅單棧無法實現,僅單個變數(currentdep)無法實現。

若只有單個變數,沒有記錄top的變數。若結點a的左孩子走到盡頭時,在調整到a右路走到頭後,無法返回a的上一層結點

若只有單個nodestack棧的話,若結點a的左孩子走到盡頭時,在調整到a右路後,無法記錄右路下向下走的時候的初始currentdep;

template

<

typename datatype>

int binarytree

::getdepth

(int numberofnodes)

trip = nodestack[top]

; currentdep=top--;if

(trip-

>rchild ==

null

&& trip-

>lchild ==

null

) trip = trip-

>rchild;

currentdep++;}

while(!

(node==

null

&&top=0)

) retrun max;

}

正確**如下

template

<

typename datatype>

int binarytree

::getdepth

(int numberofnodes)

trip = nodestack[top]

; currentdep=top--;if

(trip-

>rchild ==

null

&& trip-

>lchild ==

null

) trip = trip-

>rchild;

currentdep++;}

while(!

(node==

null

&&top=0)

) retrun max;

}

求一棵二叉樹的映象

求一棵二叉樹的映象 二叉樹的映象就是將二叉樹的左右子樹都交換位置得到的一棵二叉樹。所以我們可以通過遞迴來解決。下邊給出 實現 void mirror node root 下邊給出完整的測試 pragma once includeusing namespace std include includet...

翻轉一棵二叉樹

問題描述 翻轉一棵二叉樹 示例 輸入 4 2 7 1 3 6 9輸出 4 7 2 9 6 3 1 解法 1.用遞迴來解決 2.首先判斷根是不是空 遞迴出口 3.如果不是空則交換左右子數 4.對左子樹進行遞迴 5.對右子樹進行遞迴 definition for a binary tree node.c...

非遞迴演算法求二叉樹的高度

question 假設二叉樹採用二叉鍊錶儲存結構,設計乙個非遞迴演算法求二叉樹的高度。analysis 1.用層次遍歷來獲得二叉樹的高度 2.對二叉樹進行層次遍歷,需要借助佇列 3.每次遍歷到該層的最右邊的結點時,level 1 4.該演算法的關鍵時,如何知道當前的結點是不是該層最後乙個結點 las...