給定一棵二叉樹,已經其中沒有重複值的節點,請判斷該二叉樹是否為搜尋二叉樹和完全二叉樹。
非遞迴
/**
* struct treenode ;
*/class solution
bool judgesearchtree(treenode* root)
tmp = stk.top();
stk.pop();
arr.push_back(tmp->val);
//無右出棧
while(!stk.empty() && tmp->right == null)
if(tmp->right != null)
}//判斷陣列有序
for(int i = 0;iarr[i+1])
}return true;
}bool judgealltree(treenode* root)
}else
if(tmp->left == null && tmp->right != null)
if(tmp->left != null)
flag = true;}}
return true;
}};
判斷一棵樹是否為搜尋二叉樹
二叉樹中序遍歷的情況下,遍歷結果是所有節點依次公升序的,就是搜尋二叉樹,否則就不是。由此我們可以對之前非遞迴版本的中序遍歷稍加修改,在列印節點的時機判斷當前節點是否大於上乙個節點,就可以判斷此二叉樹是否是搜尋二叉樹。1中序遞迴遍歷二叉樹,將結果儲存進乙個stack 2比較大小,棧頂為大,棧頂為小。i...
判斷一棵樹是否為二叉搜尋樹
中序遍歷得到的值一定是公升序的,所以我們只要在遍歷的時候實時地檢查當前元素是否大於上乙個遍歷的值 lastnum 如果小於或等於,可直接得出不是二叉搜尋樹的結論。用棧來模擬中序便利的過程。definition for a binary tree node.public class treenode ...
判斷一棵樹是否為搜尋二叉樹,是否為完全二叉樹
搜尋二叉樹 一棵樹上任何乙個節點為頭的子數,左子樹都比它小,右子樹都比它大 只要中序遍歷的結果是依次公升序的,它就是平衡二叉樹 include include using namespace std class isbstandcbt bool isbst node head else return...